01. maj 2003 - 21:08Der 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??
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.
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.
ø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
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 %>
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 %>
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!
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.
Synes godt om
Ny brugerNybegynder
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.