24. januar 2006 - 09:07Der er
22 kommentarer og 1 løsning
fejl i min checklogin.asp
hej eksperter
jeg kan ikke se hvad det er jeg skal rette... altså hvorfor jeg får fejlen jeg har scriptet fra asp.dk
her er koden for checklogin.asp
<% ' Her henter jeg dologin data værdien fra formen på default.asp siden. ' Hvis denne værdi ikke er TRUE, så udføres scriptet ikke, og der ' redirectes til default.asp siden.
strdologin = request.form("dologin") if strdologin = "TRUE" then
' Hvis dologin er TRUE så henter jeg de 2 andre værdier. Nemlig det indtastede brugernavn og password. strbrugernavn = request.form("brugernavn") strPassword = request.form("password")
' Der er ikke indtastet brugernavn, hvis strbrugernavn er = "". ' Jeg sætter nu bare for en sikkerhedsskyld strbrugernavn og strpassword til intet. Herefter redirecter jeg ' til default.asp siden. if (strbrugernavn="") then strbrugernavn = "" strpassword = "" strdologin = "" Response.Redirect "login.asp"
' Hvis strbrugernavn ikke er tom, søger vi vores MySQL database igennem. Vi vil gerne have passwordet ' der hvor tabellen brugernavn er = strbrugernavn. Altså det brugernavn der blev indtastet på default.asp siden.
else ' Jeg opretter her forbindelsen til MySQL databasen : ' Husk at rette brugernavn, password og databasenavn til.
DB_FORBINDSTRENG = "driver=MySQL;server=localhost;uid=brugernavn;pwd=password;database=database" '## MySQL w/ MyODBC v2.50 strConn = DB_FORBINDSTRENG set conn=server.createobject("adodb.connection") conn.Open strConn
conn.Open "SELECT password FROM andreas WHERE pass = '" & strbrugernavn & "'",strConn
' Vi har nu hentet password ud fra databasen, som passer til det brugernavn vi indtastede på default.asp siden. ' Nu skal vi tjekke om det password passer med det som brugeren indtastede på default.asp siden. Det password ' brugeren indtastede har vi jo hentet ud i strpassword tidligere i dette script. Vi tjekker om de passer sammen, hvis ' de gør det, så sætter vi session "access" til at være "TRUE". Herefter guider vi brugeren over på den egentlig hjemmeside. ' I dette eksempel har jeg kaldt den for hovedside.asp. ' Det som man skal huske er så på alle sine sider at tjekker for om session "access" er sat til TRUE. Hvis den ikke er det, ' skal man guide brugeren over på default.asp siden, så brugeren kan logge ind. ' Det gøres ved i toppen af alle sine asp filer, at tilføje følgende kode : ' if session("access") = "TRUE" then ' Herefter kommer hele ens HTML eller ASP kode. Altså selve filen. I bunden af ens side indsætter man følgende kode : ' else ' response.redirect "login.asp"
if conn("password") = strpassword then session("access") = "TRUE"
' Jeg lukker nu database forbindelsen igen, sætter session access til TRUE og guider brugeren over ' til den rigtige hjemmeside. Jeg sætter også strbrugernavn og strpassword til intet, da vi ikke skal bruge ' disse variabler mere. Vi har jo sat session("access") til TRUE. conn.close() set conn = nothing strbrugernavn = "" strpassword = "" strdologin = "" resonse.redirect "rediger.php"
else ' Jeg sætter strpassword samt strbrugernavn til intet, hvis ikke password passer med det som brugeren indtastede. ' Herefter redirecter jeg igen til default.asp, så brugeren kan prøve en gang til. strpassword = "" strbrugernavn = "" response.redirect "login.asp" end if end if
Det er ikke conn der skal bruges til at selecte med (er jo en adodb.connection)
Det skal være: set conn=server.createobject("adodb.connection") conn.Open strConn set rs = conn.execute("SELECT password FROM andreas WHERE pass = '" & strbrugernavn & "'")
også skal du have ændret alle conn("xxx") til rs("xxx")
Det er ikke så meget der skal ændres. Faktisk kun 2 linjer.
conn.Open "SELECT password FROM andreas WHERE pass = '" & strbrugernavn & "'",strConn Skal ændres til: set rs = conn.execute("SELECT password FROM andreas WHERE pass = '" & strbrugernavn & "'")
og
if conn("password") = strpassword then skal ændres til: if rs("password") = strpassword then
Har du mere kode på den side end vist her (problemet kan ligge der)? Får du ikke et linejenr hvor fejlen opstår? Har du evt et link så vi kan se problemet? Prøv at lave en søgning igennem siden efter "password". Alle de steder hvor det forkommer i et recordset eller i en sql sætning, skal det udskiftes med "pass".
så får jeg denne... Error Type: ADODB.Recordset.1 (0x80020009) Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record. /andreas/checklogin.asp, line 62
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.