16. april 2002 - 20:52Der er
38 kommentarer og 1 løsning
Efter login..
Jeg har lavet en login system, hvor man kan log sig ind fra forsiden af (index.asp). Efter man har logget sig ind kommer man i (logget.asp), men hvis man så gå tilbage til (index.asp) uden at log af, kommer der stadig login fælderne med username og password. Det skal der helst ikke komme, der skal fx. bare stå (Du er logget ind som "martin"). Hvis man så logger af skal fælderne kommer tilbage igen.
øverst på logindsiden skal du lave et tjek for om brugeren er logget ind allerede - og hvis han er, sender du ham bare videre til den side, du så vil ha' ham til at se (i stedet for den med login formen)
Kan godt være jeg misforstår hvad du er igang med.
Men så vidt jeg kan læse mig til, så skal der være en login-form. Også kan folk logge sig ind. Derefter når de prøver at gå tilbage til login-formen, så er den fjernet og i stedet står der fx. "Velkommen tilbage"
Fejltype: Active Server Pages, ASP 0140 (0x80004005) Kommandoen @ skal være den første kommando i en Active Server Page. /ForceDesign/default.asp, line 154
Muligheden ovenfor er god (ville selv have foreslået den) Men der er også en anden mulighed, der gør at du kan lukke browseren, åbne den igen, og stadig være logged ind. (I et antal minutter, timer, dage eller whatever...! Du bestemmer selv)
Måden dette gøres, er at bruge cookies. Når der er logget ind, sætter du en cookie på brugerens maskine, med en specifik udløbstid (eller ingen hvis brugeren aldrig skal se login-siden igen) Ulempen ved denne løsning er at det ikke er alle brugere af internettet der har slået muligheden for cookies til. Ulempen ved session-variable er at de slettes når browseren lukkes, hvilket ikke altid er hensigtsmæssigt.! :)
_labisama_ > Dette burde efter min mening ikke virke :
<% if session("login") = "1" then %> Du ER logget ind... <% end if %> <% else %> Din login-form skal være her! <% end if %> '*
Da du har en "end if"-erklæring inden du "else"-sætningen. Det skal man ikke, kun en "end if" efter hele blokken, dvs. kun den jeg har markeret med en *
wittnezz >> Du har ret i det med scriptet - kopierede den hurtigt fra noget jeg tidligere har brugt og kom lige til at slette for lidt :)
Også en mere alvorlig del af sagen! Det er altså ikke helt rigtigt hvad du skriver omkring cookies og session.
Din holdning lyder mest som om du holder dig til cookies, men jeg kan finde hav af dårlige ting om den. Bl.a. er man nødtil at kryptere dit password, før det er 100% sikkert.
Det med at du lukker browseren ned og session ryger er heller ikke helt korrekt. Det er faktisk serveren som styrer hvor langtid en session-værdi skal være aktiv.
Men det er vel lidt op til folk hvad der er nemmest i de forskellige situationer - Bl.a. vil jeg klart anbefale session her!
_labisama_ > Nope, bruger selv session-variable. (Men forstod ikk' helt spm. tror jeg, så jeg ville bare sikre mig, at denne mulighed også blev præsenteret)
Hvad kan jeg sige, du har ret mht. sessions, men det sker at de ryger før session-timeout nåes, dette sker ikke med cookies. (Men som du siger, skal man sikre sig at tingene bliver krypteret ordentligt inden det sendes til klienten. Især hvis det er f.eks. pwd og lign.)
Der skal være en login-form. Folk logge sig ind. Derefter når de prøver at gå tilbage til login-formen, så er den fjernet og i stedet står der fx. "du er logget ind" hvis de så logger af skal login-form komme på plads igen.
<% if mode = "" then %> <% Session("brugernavn") = request.form("brugernavn") Session("password") = request.form("password") %> <% set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/database.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};"
Response.Buffer = True
Function checklogin(brugernavn,password) set tjek = Conn.Execute("SELECT * FROM bruger WHERE brugernavn = '"& brugernavn &"' AND password = '"& password &"'") If tjek.EOF THEN Response.Write "<FONT FACE=Verdana SIZE=1 COLOR=#FF0000><b>Bruger ikke fundet!</b></FONT>" Else Session("login") = tjek("id") Response.Redirect("godkendt.asp") End If End Function
Function sqlreplace(streng) sqlreplace = Replace(streng,"'","''") End Function REM Diverse funktioner slut %><% If Request.ServerVariables("REQUEST_METHOD") = "POST" Then checklogin sqlreplace(Request.Form("brugernavn")),sqlreplace(Request.Form("password")) %>
hvis problemet er at brugeren trykker på *tilbage* knappen i browseren, kan du afhjælpe det ved at sætte flg. 2 linjer kode ind i toppen af hver enkelt beskyttet side:
de får siden til at udløbe, så brugeren ikke kan komme tilbage til dem uden at loade dem igen (ellers bliver de bare gemt i cachen indtil han lukker browservinduet)
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.