13. november 2003 - 14:49Der er
15 kommentarer og 1 løsning
husk password og username
Er der nogen, der kan hjælpe mig med at denne side kan huske både password og username ved hjælp af min checkbox. Jeg mener, man gør det i cookies, men ved ikke så meget om det.
<% IF (Session("Authorized") = ("True")) THEN Response.Redirect "gallery.asp" END IF %>
<% ' Hvis der er blevet trykket på knappen "Login" If Request.Form("Action") = "Login" Then ' Her forberedes de indtastede værdier til validering strUID = Trim(Replace(Request.Form("Username"),"'","")) strPWD = Trim(Replace(Request.Form("Password"),"'",""))
' Hvis der er skrevet noget i både brugernavn og adgangskode If Len(strUID) > 0 And Len(strPWD) > 0 Then
' Variables ' *********
Dim objConn Dim oRs
' Connect to the DB ' ***************** Set objConn = Server.CreateObject("ADODB.Connection") curDir = Server.MapPath("users.mdb") objConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Opbygning af SQL streng (database) trin FROM login (users = navn på database) ' primærnøgle er UserID, efterfølgende username og password strSQL = "SELECT UserID, trin FROM login"&_ " WHERE (Username = '" & strUID & "')"&_ " AND (Password = '" & strPWD & "')"
Set oRs = objConn.Execute(strSQL) If Not (oRs.BOF Or oRs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = oRs("UserID") trin = oRs("trin") Session("Authorized") = "True"
Else ' Hvis brugeren ikke fandtes i databasen strERR = "Sorry, you were not accepted by the system, <br>e-mail us to get the right username and password!!!" End If
' Rydder op i vores connection objekt objConn.Close Set objConn = Nothing
If Len(intUID) Then ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre Session("UserID") = intUID If trin = 1 THEN Response.Redirect "gallery.asp" elseif trin = 2 THEN Response.Redirect "gallery.asp" END IF End If Else ' Hvis der ikke var angivet brugernavn og adgangskode strErr = "You must type in both username and password" End If
If Len(strErr) > 0 Then ' Her laves fejlmeddelsen om til rød skrift strErr = "<font class=fejllogin>" & strErr & "</font>" End If End If %>
Siden du har kopieret anvender en database til at kontrollere om pågældende kan få adgang ved et indtastet brugernavn og password. Der må være en side hvor du opretter en bruger med brugernavn og password.
Hvorfor vil du gemme brugernavn og password i en cookie ?
Hvorfor jeg vil gemme det i en cookie, det aner jeg ikke og ved heller ikke, om det er det, jeg vil. Har bare hørt om det før.
Jeg gemmer ikke brugernavn og password på en anden side, men derimod i min DB. Men kan du hjælpe på andenvis, hvordan jeg kan give brugeren muligheden for at gemme password og username?
Indsæt denne på din login side i din login form: <INPUT TYPE=CHECKBOX CHECKED name="save"> Bagefter indsætter du dette på siden der godkender login: If request.form("save") = "on" then Response.Cookies("Brugere")("brugernavn") = session("brugernavn") Response.Cookies("Brugere")("password") = password Response.Cookies("Brugere").expires = Date+365 'Information gemmes i cookie i et år, hvis brugeren har valgt at gemme information Else Response.Cookies("Brugere").expires = Date-1000 'Information slettes ved at sætte "expires" 1000 dage tilbage, idet brugeren har valgt at slette information
Din side forudsætter at brugeren har et brugernavn og password, som kan indtastes på siden, eller du via mail har sendt oplysningerne til brugeren. Når så brugeren har indtastet oplysningerne og krydset af i chckboxen, kontrollers oplysningerne i databasen og hvis oplysningerne er korrekte sendes cookien til brugeren.
Fidusen er at siden hvergang den åbnes prøver at finde cookien først. Hvis cookien er der og oplysningerne i cookien er korrekte kan du gå direkte til gallery og hvis ikke bliver du på siden og skal indtaste oplysnigerne ( brugere siden for første gang, hvis brugeren har glemt at krydse af i checkboxen eller cookien er slettet.)
I din øverste kode kan du tilføje : <% IF (Session("Authorized") = ("True")) THEN Response.Redirect "gallery.asp" END IF If Request.Cookies("Gallery")("remember")="yes" Response.Redirect "gallery.asp" END IF %> den kontrollere siden om du er på, dvs. har været rundt i gallery og vender tilbage på din opstartside uden at exploren har været lukket. I den nye kode kan du så kontrollere om cookien eksisterer og hvis den eksisterer så forsætter scriptet.
Nu skal du have afsendt cookien og det kan du så gøre når den validere på det indtastede brugernavn og password.
Prøv at indsætte det som "syntax hh" foreslår i denne:
Set oRs = objConn.Execute(strSQL) If Not (oRs.BOF Or oRs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = oRs("UserID") trin = oRs("trin") Session("Authorized") = "True" If request.form("Gallery")("remember") = "yes" then Response.Cookies("Gallery")("remember") = "yes" Response.Cookies("Gallery").expires = Date+365 'Information gemmes i cookie i et år, hvis brugeren har valgt at gemme information Else Response.Cookies("Gallery").expires = Date-1000 'Information slettes ved at sætte "expires" 1000 dage tilbage, idet brugeren har valgt at slette information
End If Else ' Hvis brugeren ikke fandtes i databasen strERR = "Sorry, you were not accepted by the system, <br>e-mail us to get the right username and password!!!" End If
Jeg er dog ikke helt klar over om den kan indsættes som vist, men du skal på en eller anden måde afsende cookien og det skete ikke i dit script.
Du behøver ikke denne:
<%If Request.Cookies("remember")="yes" Then Response.Write "checked"%>
i scriptet:
<td><input type="checkbox" name="remember" value="yes" <%If Request.Cookies("remember")="yes" Then Response.Write "checked"%>></td> </tr>
If request.form("remember") = "yes" then Response.Cookies("Gallery")("remember") = "yes" Response.Cookies("Gallery").expires = Date+365 'Information gemmes i cookie i et år, hvis brugeren har valgt at gemme information
Henrik, Jeg har lige prøvet det af og den melder nu denne fejl;
Microsoft VBScript compilation error '800a03f9'
Expected 'Then'
/gallery_login.asp, line 5
If Request.Cookies("Gallery")("remember")="yes" -----------------------------------------------^
Og mine koder ser nu sådan ud - bare for god ordensskyld;
<% IF (Session("Authorized") = ("True")) THEN Response.Redirect "gallery.asp" END IF If Request.Cookies("Gallery")("remember")="yes" Response.Redirect "gallery.asp" END IF %>
<% ' Hvis der er blevet trykket på knappen "Login" If Request.Form("Action") = "Login" Then ' Her forberedes de indtastede værdier til validering strUID = Trim(Replace(Request.Form("Username"),"'","")) strPWD = Trim(Replace(Request.Form("Password"),"'",""))
' Hvis der er skrevet noget i både brugernavn og adgangskode If Len(strUID) > 0 And Len(strPWD) > 0 Then
' Variables ' *********
Dim objConn Dim oRs
' Connect to the DB ' ***************** Set objConn = Server.CreateObject("ADODB.Connection") curDir = Server.MapPath("users.mdb") objConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
' Opbygning af SQL streng (database) trin FROM login (users = navn på database) ' primærnøgle er UserID, efterfølgende username og password strSQL = "SELECT UserID, trin FROM login"&_ " WHERE (Username = '" & strUID & "')"&_ " AND (Password = '" & strPWD & "')"
Set oRs = objConn.Execute(strSQL) If Not (oRs.BOF Or oRs.EOF) Then ' Hvis brugeren fandtes i databasen intUID = oRs("UserID") trin = oRs("trin") Session("Authorized") = "True"
If request.form("remember") = "yes" then Response.Cookies("Gallery")("remember") = "yes" Response.Cookies("Gallery").expires = Date+365 'Information gemmes i cookie i et år, hvis brugeren har valgt at gemme information
Else Response.Cookies("Gallery").expires = Date-1000 'Information slettes ved at sætte "expires" 1000 dage tilbage, idet brugeren har valgt at slette information
End If Else ' Hvis brugeren ikke fandtes i databasen strERR = "Sorry, you were not accepted by the system, <br>e-mail us to get the right username and password!!!" End If
' Rydder op i vores connection objekt objConn.Close Set objConn = Nothing
If Len(intUID) Then ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre Session("UserID") = intUID If trin = 1 THEN Response.Redirect "gallery.asp" elseif trin = 2 THEN Response.Redirect "gallery.asp" END IF End If Else ' Hvis der ikke var angivet brugernavn og adgangskode strErr = "You must type in both username and password" End If
If Len(strErr) > 0 Then ' Her laves fejlmeddelsen om til rød skrift strErr = "<font class=fejllogin>" & strErr & "</font>" End If End If %>
<% IF (Session("Authorized") = ("True")) Then Response.Redirect "gallery.asp" END IF If Request.Cookies("Gallery")("remember")="yes" then Response.Redirect "gallery.asp" END IF %>
Henrik, nu har jeg godt nok givet dig pointene, som også er velfortjent, men vil lige høre dig om en ting...
Når jeg har logget ind en gang, vil den så altid huske det indtil tiden løber ud? Jeg kunne nemlig godt tænke mig, at hver gang man gik ind så lige fik login siden, som dog husker password og username, men bare at man lige skulle klikke OK.
Jeg vil meget gerne give dig yderligere 60 point for svar på dette. Hvis du er interesseret, så opretter jeg det som et nyt indforstået spm til dig straks.
Hej igen Ja, så længe cookien er på brugerens pc og datoen ikke er overskredet skulle det virke.
Der kan godt laves et "ok" system, men sikkerhedsmæssig har det ingen betydning. Du kan indføre noget kode der giver en box man kan sig ok til, samtidig kunne den opdatere cookien, så den hver gang man har været på din side gælder for et år. Cookien er et sikkert tegn på at brugern har været på din side før og er godkendt i databasen. Det er ikke nødvendigt at den sætter brugernavn og password på. Hvis cookien kopieres til en anden pc med og uden brugernavn og password i cookien, vil pc der har cookien få adgang til din side. Den bedste sikkerhed er som minimum, at der skal indtastes et password hver gang.
Jeg får desværre ikke tid før i næste uge, men ellers vil jeg gerne hjælp dig. Det var nu "syntax hh" der fik dine point, men skidt det er sjovt at hjælpe.
Arhhh, pis, det var min fejl! Det var dig, der skulle have haft pointene eller ja, I har nok begge hjulpet, men du skal ikke snydes for dem, så derfor opretter jeg et nyt spm med det samme rettet til dig. Som du kan gå klikke indpå det med det samme og få pointene! Der svarer jeg lige tilbage på det du har skrevet.
Nå, nu har jeg oprettet det andet spm under ASP programmering titel "Password og username" kalder jeg det. Så skriv mig tilbage på det og du får pointene.
//D
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.