Avatar billede plato Juniormester
15. februar 2004 - 18:31 Der er 4 kommentarer og
1 løsning

ASP login system.

Hejsa NG.

Jeg har et loginsystem hvor der en "Husk mig" funktion.
Nu har jeg stirret mig blind i flere timer for det virker nemlig ikke. Ikke der kommer en fejl som sådan, men systemet logger bare ikke ind, og går til opret (som den vil gøre hvis personen ikke er oprettet.).

Først kommer koden på formen på forsiden:

<%
Username = Request.Cookies("brugernavn")
Password = Request.Cookies("password")
%>
<Masser af html kode>
<%
If Session("login") = False THEN
%>
<form method="post" name="adminlogin" action="opret.asp">
       
<span class="tekstboks">Brugernavn:</span><br>
<input class="forms" size="20" name="username" value="<%=Username%>"><br>
<span class="tekstboks">Password:</span><br>
<input class="forms" size="20" type="password" name="password" value="<%=Password%>"><br><input class="formsknap"  type="submit" value="Login" name="Action"><br><span class="tekstboks">Husk mig</span><input type="checkbox" name="rem" value="true"><br><br>
<a href="login.asp" title="Opret ny bruger">Opret bruger</a><br>
<a href="login.asp" title="F&aring; tilsendt dit password">Glemt password</a><br>
</form>
<%
Else
Response.write("<span class=tekstboks>" & session("user") & ", du har nu følgende muligheder:</span><br><br>")
Response.write("<a href=profile.asp?mode=own_profile>Ret profil</a><br><a href=>Se dine film</a><br><a href=>Tilføj film</a><br><a href=>Slet film</a><br><a href=>Se andres film</a>")
Response.write("<form method=post action=logout.asp><input type=submit class=formsknap value=Logout></form>")
End If
%>


Så kommer koden på selve loginsystem:


<% if request.querystring("mode") = "check" then %><%

strUID = Trim(Replace(Request.Form("uid"),"'","''"))
strPWD = Trim(Replace(Request.Form("pwd"),"'","''"))

If Request.Form("rem") = "true" Then
    Response.Cookies("brugernavn") = strUID
    Response.Cookies("brugernavn").Expires = date() + 365
    Response.Cookies("password") = strPWD
    Response.Cookies("password").Expires = date() + 365
End If

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open Application("Provider")

Set Rs = Server.CreateObject("ADODB.Recordset")
SQL ="SELECT * FROM users WHERE (user ='" & strUID & "') AND (password ='" & strPWD & "');"
Rs.Open SQL, Conn

If NOT(Rs.BOF AND Rs.EOF) Then
   
        Session("login") = True
        Session("user") = Rs("User")
        Session("id") = Rs("id")
        Session("lastlogon") = Rs("lastlogon")
        session("email") = Rs("email")
   
        Sql = "UPDATE users SET lastlogon = #"& Date() &"# WHERE id = " & Rs("id")
        Conn.Execute(Sql)
           
    Response.Redirect(Request.ServerVariables("HTTP_REFERER"))
Else
    Response.Redirect("opret.asp")
End If
    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
end if%>

Nogen der lige kan pege på hvad der er galt? Hvis jeg fjerner systemet med "Husk mig" virker login fint. Men det andet er mere brugervenligt.
Avatar billede ellebaek Nybegynder
15. februar 2004 - 18:39 #1
<% if request.querystring("mode") = "check" then %><%

strUID = Trim(Replace(Request.Form("uid"),"'","''"))
strPWD = Trim(Replace(Request.Form("pwd"),"'","''"))

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open Application("Provider")

Set Rs = Server.CreateObject("ADODB.Recordset")
SQL ="SELECT * FROM users WHERE (user ='" & strUID & "') AND (password ='" & strPWD & "');"
Rs.Open SQL, Conn

If NOT(Rs.EOF) Then
   
        Session("login") = True
        Session("user") = Rs("User")
        Session("id") = Rs("id")
        Session("lastlogon") = Rs("lastlogon")
        session("email") = Rs("email")

    If Request.Form("rem") = "true" Then
    Response.Cookies("brugernavn") = strUID
    Response.Cookies("brugernavn").Expires = date() + 365
    Response.Cookies("password") = strPWD
    Response.Cookies("password").Expires = date() + 365
End If
        Sql = "UPDATE users SET lastlogon = #"& Date() &"# WHERE id = " & Rs("id")
        Conn.Execute(Sql)
           
    Response.Redirect(Request.ServerVariables("HTTP_REFERER"))
Else
    Response.Redirect("opret.asp")
End If
    Set Rs = Nothing
    Conn.Close
    Set Conn = Nothing
end if%>


Prøv dette...
Jeg har rettet i din if, fra if nopt (rs.BOF AND rs.EOF) (da den ikke kan være begge steder samtidig hvis tabellen ikke er tom) og så har jeg flyttet dine cookies ind efter dit db check, for at gøre det mere brugervenligt...
Avatar billede plato Juniormester
15. februar 2004 - 18:56 #2
Nej, den vil ikke. Det er som om brugeren jeg logger ind med ikke eksistere.

Så selv en anden fejl:
<form method="post" name="adminlogin" action="opret.asp">
har jeg rettet til:
<form method="post" name="adminlogin" action="opret.asp?mode=check">

men stadig intet held.
Avatar billede plato Juniormester
16. februar 2004 - 11:53 #3
Lukket
Avatar billede ellebaek Nybegynder
17. februar 2004 - 15:25 #4
Hvad var løsningen ?
Avatar billede plato Juniormester
17. februar 2004 - 17:34 #5
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