Avatar billede askeb Nybegynder
01. maj 2003 - 21:08 Der er 11 kommentarer og
2 løsninger

Login - Hvordan?

Hejsan
Jeg skal til at lave noget scripting til et forum med login osv. men jeg er lidt i tvivl om hvordan jeg skal udforme loginsystemet. Jeg har prøvet lidt med sessions som siger f.eks. når man logger ind:

If brugernavn = RS("brugernavn") And Pass = RS("Pass") Then
    Session("login") = "True"
    Session("level") = RS("level")
    Session("user") = RS("brugernavn")
    Level = RS("level")
    else
    Session("login") = False
  End If

Dette er jo en uhyr simpel metode at gøre det på, MEN når jeg så er logget ind og kommer tilbage til forsiden og går en tak videre så udløber sessionen af sig selv. (Uden session.Abandon eller Timeout).

Så det er ikke en optimal måde at løse det på. Hvordan skal jeg så gøre det?

Jeg ved der også er noget der hedder application...er det det jeg skal ha fat i??

/askeb/
Avatar billede Spotgun Seniormester
01. maj 2003 - 21:22 #1
Jeg har efterhånden lavet adskillige systemer der bruger session-variabler, og der har jeg aldrig oplevet de problemer du snakker om dér... Men du kan da evt. sætte en højere session-timeout værdi på alle siderne, eller bruge cookies i stedet for.
Avatar billede the_bma_man Nybegynder
01. maj 2003 - 21:23 #2
Du skal _ikke_ have fat i application - vil jeg ikke råde dig til, i hvert fald - da du så skal til at lave noget array-noget, eller i hvert fald mange variable. Application var's lever i hele applikations levetid - og vil derfor ikke være unik ifm. den enkelte session.
Når du nu kommer til forsiden - har du så sikret dig, at koden ikke prøver at logge på igen? Altså det der kode, du skriver, må KUN udføres, hvis session("login") er false.
Ellers prøver den jo igen at bruge recordsettet - og det har du sikkert lukket på nuværende tidspunkt.
Avatar billede askeb Nybegynder
01. maj 2003 - 21:23 #3
Der er ingen timeout værdi :)
Avatar billede the_bma_man Nybegynder
01. maj 2003 - 21:27 #4
Så er den sikkert default - = 20 min.
Avatar billede askeb Nybegynder
01. maj 2003 - 21:28 #5
øverst i min forside har jeg et script der ser sådan ud:
<% if Session("login") <> "True" then
response.write "Du er logget ind som " & session("user") & " : <a href=""logud.asp"" class=""logud"">Log ud</a>"
else
response.write "LOGIN:" & "<input name=""brugernavn"" type=""text"" id=""brugernavn"">" & "PASS:" & "<input type=""password"" name=""pass"">" & "<input type=""submit"" name=""Submit"" value=""Tryk"" style=""border-width:0; color: #FFFFFF; background-color: #111111;"">"
end if %>

Det vil sige der kun skulle være mulighed for at logge på 1 gang...problemet er at når jeg kommer tilbage til forsiden så er loginformen der...altså kan den ikke aflæse sessionen ordentligt
Avatar billede the_bma_man Nybegynder
01. maj 2003 - 21:32 #6
Du spørger på session("login") <> true - så lader du ham være logget på.
Prøv at "vende den om".
Avatar billede askeb Nybegynder
01. maj 2003 - 21:35 #7
doh...jeg mener selvfølgelig = "true"

men det virker heller ikke

DET MÆRKELIG er så at længere nede på siden har jeg et script der hedder:

<% if session("level") = 2 then
response.write "Hej <strong>'"& session("user") & "'</strong>. Du er på admin level. Det vil sige at du kan administrere xxxxx.dks indhold..." & "<br>" & "<br>"
response.write "Som admin kan du:" & "<br>"
-----
elseif session("level") = 1 then
response.write "Du er logget ind som bruger af xxxx.dk"
else
response.write "Du er ikke logget ind"
end if %>

og det virker fint...
Avatar billede ellebaek Nybegynder
01. maj 2003 - 21:47 #8
<% if Session("login") = "True" then
response.write "Du er logget ind som " & session("user") & " : <a href=""logud.asp" class=""logud"">Log ud</a>"
else
response.write "LOGIN:" & "<input name=""brugernavn"" type=""text"" id=""brugernavn"">" & "PASS:" & "<input type=""password"" name=""pass"">" & "<input type=""submit"" name=""Submit"" value=""Tryk"" style=""border-width:0; color: #FFFFFF; background-color: #111111;"">"
end if %>
Avatar billede ellebaek Nybegynder
01. maj 2003 - 21:48 #9
ups... Sorry :-)
Avatar billede ellebaek Nybegynder
01. maj 2003 - 21:51 #10
men hvorfor laver du ikke bare dit script om til at se ud som følgende ??
<% if session("user") <> "" then
response.write "Du er logget ind som " & session("user") & " : <a href=""logud.asp" class=""logud"">Log ud</a>"
else
response.write "LOGIN:" & "<input name=""brugernavn"" type=""text"" id=""brugernavn"">" & "PASS:" & "<input type=""password"" name=""pass"">" & "<input type=""submit"" name=""Submit"" value=""Tryk"" style=""border-width:0; color: #FFFFFF; background-color: #111111;"">"
end if %>
Avatar billede askeb Nybegynder
01. maj 2003 - 21:58 #11
Jo...det virker...
det skal du nok få point for...men hvad er fejlen i at skrive if Session("login") = "True"?
Avatar billede ellebaek Nybegynder
01. maj 2003 - 22:05 #12
det er der ikke noget problem i, for så vidt... Det er bare at spilde arbejdet, så længe du har en session behøver du ikke at definere 2 session, til dette tjek. Hvis det er 200 brugere har du 400 sessions, hvor halvdelen er ligemeget...
Du skal huske konsistensen med definitionen af dine sessions...
I dit spg. kan jeg se at du sætter session("login") = false mens du bruger session("login") = "True"
Husk at du enten skal bruge dem eller ej, da det har indvirkning på når du tjekker for denne session...

Det blev vidst lidt rodet forklaret, men håber det går.
/Jens E!
Avatar billede the_bma_man Nybegynder
01. maj 2003 - 22:21 #13
Det er fint nok at spørge på session("login") = "True".
Men her bruger du den som en streng.
Når du sætter den med session("login") = false bruger du den som en boolean.
Men det bør ikke betyde noget i den aktuelle situation, da du jo checker på strengen "True" - så længe du har "vendt den om".
Men som ellebaek skriver, så prøv at begrænse dit antal af session-variabler - når du nu kan checke på session("user") - og faktisk få samme information, nemlig at man er logget på - så drop den anden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester