Avatar billede teknikeren Nybegynder
02. juni 2002 - 12:47 Der er 11 kommentarer og
1 løsning

Brugersystem igen igen...

Nu har jeg lavet alt det der...Nu er der bare login-formen
Har lavet formen rigtigt oprettet bruger og logget ind..
Dette går fint nok.
Men når jeg logger ind skriver den hele tiden "Forkert brugernavn / password prøv igen" selvom jeg skriver det rigtige...
Koden har jeg skrevet således:

<%
dim cn, strcn
Set cn = Server.CreateObject("ADODB.Connection")
strcn = "Provider = Microsoft.Jet.OLEDB.4.0;"
strcn = strcn & "data source = /WINDOWS/Skrivebord/hp/brugere.mdb;"
cn.ConnectionString = strcn
cn.Open
dim SQL
SQL = "Select * FROM brugere WHERE [brugernavn] = '" & Request.Form("BrugerNavn") & "' AND [password] = '" & Request.Form("Password") & "'"
Set rs = cn.Execute(SQL)

If [brugerlevel]=1 Then

Response.Redirect "almbruger.asp"


ElseIf [brugerlevel]=2 Then

Response.Redirect "admin.asp"

Else

Response.Write "Forkert brugernavn / password."
%>
<BR>
<A HREF = "default.asp">Prøv igen</A>
<%
End If
%>
Hvad er der gået galt?
Avatar billede medions Nybegynder
02. juni 2002 - 12:51 #1
<%
dim cn, strcn
Set cn = Server.CreateObject("ADODB.Connection")
strcn = "Provider = Microsoft.Jet.OLEDB.4.0;"
strcn = strcn & "data source = /WINDOWS/Skrivebord/hp/brugere.mdb;"
cn.ConnectionString = strcn
cn.Open
dim SQL
SQL = "Select * FROM brugere WHERE [brugernavn] = '" & Request.Form("BrugerNavn") & "'"
Set rs = cn.Execute(SQL)

If rs("password") = Request.Form("password") Then

Response.Redirect "almbruger.asp"


Else

Response.Redirect "admin.asp"

Else

Response.Write "Forkert brugernavn / password."
%>
<BR>
<A HREF = "default.asp">Prøv igen</A>
<%
End If
%>

//>Rune
Avatar billede medions Nybegynder
02. juni 2002 - 12:54 #2
Her har jeg rydet lidt op i koden ;-) (du skal huske at definere om det er objekt eller om det er en streng variabel osv. i variabelnavnet!)

<%
dim objConn, strCn
Set objConn = Server.CreateObject("ADODB.Connection")
strCn = "Provider = Microsoft.Jet.OLEDB.4.0;"
strCn = strCn & "data source = /WINDOWS/Skrivebord/hp/brugere.mdb;"
objConn.ConnectionString = strCn
objConn.Open
dim SQL
strSQL = "Select * FROM brugere WHERE [brugernavn] = '" & Request.Form("BrugerNavn") & "'"
    Set objRs = objConn.Execute(strSQL)

    If rs("password") = Request.Form("password") Then
        Response.Redirect "almbruger.asp"
    Else
        Response.Redirect "admin.asp"
    Else
        Response.Write "Forkert brugernavn / password."
%>
<BR>
<A HREF = "default.asp">Prøv igen</A>
<%
    End If
%>

//>Rune
Avatar billede tjacob Juniormester
02. juni 2002 - 13:19 #3
medions>  Formelt er det fuldstændig ligegyldigt hvad du kalder dine variable (blot det ikke er beskyttede ord).
At koden så er meget nemmere at læse med et letforståeligt prefix er en anden ting. ;-)
Avatar billede medions Nybegynder
02. juni 2002 - 13:26 #4
Her har du et eksempel på et godt udviklet loginsystem med kommentar...


    ' Her forberedes de indtastede værdier til validering
    strUID = Trim(Replace(Request.Form("brugernavn"),"'",""))
    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

        ' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject("ADODB.Connection")
        myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=/WINDOWS/Skrivebord/hp/brugere.mdb;"
        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Users"&_
            " WHERE (brugernavn = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            ' Hvis brugeren fandtes i databasen
            intUID = rs("UserID")
            intTRAN = rs("Transfer")
           
           
        Else
            ' Hvis brugeren ikke fandtes i databasen
            strERR = "Du blev ikke godkendt af systemet"
        End If

        ' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

//>Rune
Avatar billede medions Nybegynder
02. juni 2002 - 13:31 #5
tjacob> Du kan da ikke sige andet end det er dejlig at ha' en kode hvor det hele er sat perfekt op! Det er definere variablerne er, ja, selvfølgelig kun for ordenhedens skyld, men alle kan sige hvad de vil, det er sq dejligst med en perfekt kode! :-)

//>Rune
Avatar billede fet321 Nybegynder
02. juni 2002 - 13:33 #6
Hvis vi går ud fra at [brugerlevel] er et felt i din brugere tabel, skal din kode se sådan ud

<%

dim cn, strcn
Set cn = Server.CreateObject("ADODB.Connection")
strcn = "Provider = Microsoft.Jet.OLEDB.4.0;"
strcn = strcn & "data source = /WINDOWS/Skrivebord/hp/brugere.mdb;"
cn.ConnectionString = strcn
cn.Open
dim SQL
SQL = "SELECT * FROM brugere WHERE [brugernavn] = '" & Request.Form("BrugerNavn") & "';"
Set rs = cn.Execute(SQL)

If rs.EOF Then

    Response.Write "Forkert brugernavn.<BR>" &_
                "<A HREF = ""default.asp"">Prøv igen</A>"

Else

    If rs("password") = Request.Form("password") Then
   
        If rs("brugerlevel")=1 Then
       
            Response.Redirect "almbruger.asp"
       
        ElseIf rs("brugerlevel")=2 Then
       
            Response.Redirect "admin.asp"
       
        Else
       
    Else
       
        Response.Write "Forkert password.<BR>" &_
                    "<A HREF = ""default.asp"">Prøv igen</A>"
       
    End If

End If

cn.close
Set cn 0 Nothing
Set rs = Nothing

%>
Avatar billede fet321 Nybegynder
02. juni 2002 - 13:52 #7
Ovenstående vil give fejl.
Bruge denne i stedet.

<%

dim cn, strcn
Set cn = Server.CreateObject("ADODB.Connection")
strcn = "Provider = Microsoft.Jet.OLEDB.4.0;"
strcn = strcn & "data source = /WINDOWS/Skrivebord/hp/brugere.mdb;"
cn.ConnectionString = strcn
cn.Open
dim SQL
SQL = "SELECT * FROM brugere WHERE [brugernavn] = '" & Request.Form("BrugerNavn") & "';"
Set rs = cn.Execute(SQL)

If rs.EOF Then

  Response.Write "Forkert brugernavn.<BR>" &_
            "<A HREF = ""default.asp"">Prøv igen</A>"

Else

  If rs("password") = Request.Form("password") Then
 
      If rs("brugerlevel")=1 Then
     
        Response.Redirect "almbruger.asp"
     
      ElseIf rs("brugerlevel")=2 Then
     
        Response.Redirect "admin.asp"
     
      Else
     
          Response.Redirect "Hvem er du?"
     
      End If
     
  Else
     
      Response.Write "Forkert password.<BR>" &_
              "<A HREF = ""default.asp"">Prøv igen</A>"
     
  End If

End If

cn.close
Set cn 0 Nothing
Set rs = Nothing

%>
Avatar billede tjacob Juniormester
02. juni 2002 - 14:14 #8
medions> helt enig!!
Ville bare fjerne mulig misforståelse om at det var "tvunget". ;-)
Avatar billede medions Nybegynder
02. juni 2002 - 14:51 #9
tjacob> ;-) fair nok!

//>Rune
Avatar billede teknikeren Nybegynder
02. juni 2002 - 17:28 #10
sql = "UPDATE brugere SET brugerlevel='"Request.Form("level")"' WHERE brugernavn = "Request.Form("bruger")""
Hvad er der galt? Den skriver slut på sætning var ventet...
Avatar billede fet321 Nybegynder
02. juni 2002 - 20:44 #11
Samme fejl som tidligere.
Du mangler et &-tegn til sidst i din sql.
Avatar billede fet321 Nybegynder
02. juni 2002 - 20:46 #12
teknikeren >> Du behøves ikke at tildele 200 points til hvert spørgsmål.
Så svære er de heller ikke ;-)
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