Avatar billede klyde Nybegynder
07. januar 2002 - 00:26 Der er 3 kommentarer og
2 løsninger

Find en fejl ...

Heysa...

Jeg har et lille problem.
Jeg har lavet en login funktion der tager data fra en DB. Problemet er bare at den kun vil verificere den først bruger i DB\'en, brugeren på linje to i DB\'en siger den fejl til.

-------------------------------------------------------
<% If Request(\"func\") = \"login\" Then %>
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"db/users.mdb\")
Conn.Open DSN
%>

<%
strSQLPass = \"Select * from Brugere\"
Set rsPass = Conn.Execute (strSQLPass)
%>
<%
        Session(\"Online\") = \"\"
        Session(\"BrugerNavn\") = \"\"
        Session(\"BrugerID\") = \"\"
        Session(\"Grade\") = \"\"
Do
    If LCASE(Request(\"bruger\")) = \"\" & lcase(rsPass(\"BrugerNavn\")) & \"\" and LCASE(Request(\"pass\")) = \"\" & lcase(rsPass(\"Password\")) & \"\" Then
        Session(\"Online\") = \"1\"
        Session(\"BrugerNavn\") = rsPass(\"BrugerNavn\")
        Session(\"BrugerID\") = rsPass(\"ID\")
        Session(\"Grade\") = \"\"
        Response.Redirect \"\"& vPath &\"\"
        Else
        Response.Redirect \"\"& vPath &\"user-login.asp?fejl=no-user\"
    End If
rsPass.MoveNext
Loop While rsPass.EOF
%>

<%
\' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
<% End If %>
-------------------------------------------------------
Kan i hjælpe!
/Klyde
Avatar billede erikjacobsen Ekspert
07. januar 2002 - 00:30 #1
Du sku\' ta\' og

strSQLPass = \"Select * from Brugere where brugernavn=\'\" & Request(\"bruger\") & \"\' and password=\'\" & Request(\"pass\") \"\'\"
Avatar billede sajbar Nybegynder
07. januar 2002 - 00:31 #2
hrm hvorfor ikke lave et select hvor der bliver udvalgt på de betingelser som bliver tastet ind altså nogle where betingelser..så er du fri for at skal løbe ALLE de brugere du får hentet ud igennem for at se om det passer..
og hvordan det gøres kan jeg ikke lige svare dig på..er jeg for bombet til...håber du kan bruge hjælpen..jeg er ihvertfald ude..!
Avatar billede tmceu Praktikant
07. januar 2002 - 00:43 #3
Dit script er en ret dårlig løsning efter min mening og du bør følge erik\'s opfordring, da det giver den bedste performance. Hvis du selv har lavet scriptet, vurderer jeg dog at du skal have lidt mere forklaring (ikke for at virke nedladende :-)

Der er et par problemer med det eksisterende

1. Du kontrollerer ikke for om du overhovedet får et ikke-tomt recordset retur
2. Du kontrollerer på den forkerte værdi i din do-loop

Ad 1) Du bør altid kontrollere for om dit recordset er tomt, eks. med if not rsPass.EOF then...

Ad 2) Du skal i stedet kontrollere for Loop While NOT rsPass.EOF - i dit tilfælde tager den kun den første post, fordi din loop kun kører hvis du står ved EOF.

Hvis du følger Erik\'s forslag og ændrer dit SQL statement, bør du kun max. få den ene bruger tilbage som er indtastet. Derefter kan du kontrollere om brugeren findes med if not rsPass.EOF then... og så kontrollere de felter du vil, som eks. password.

Håber denne forklaring hjælper.
Avatar billede erikjacobsen Ekspert
07. januar 2002 - 00:46 #4
mange tak, tmceu - jeg var bare for doven til at skrive alt det :)
Avatar billede klyde Nybegynder
07. januar 2002 - 00:55 #5
No offence taken tmceu...

Men tak for hjælpen, det virker nu...
Jeg har brugt erikjacobsen\'s forslag, og jeg må jo erkende at det virker noget bedre, så tak.

/Klyde
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