07. januar 2002 - 00:26Der 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.
<% 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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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..!
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.
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
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.