Kan nån säga varför den här koden inte verifierar användaren och skickar vidare?
<%
'Deklarera några av variablerna
Dim strAnvNamn, strLosen, conn, RS
'Hämta info från formulären
strAnvNamn = Trim(Request.Form("txtUsername"))
strAnvNamn = Replace(strAnvNamn, Chr(39), Chr(34)) ' <== Byt ' mot "
strLosen = Trim(Request.Form("txtPassword"))
strLosen = Replace(strLosen, Chr(39), Chr(34)) ' <== Byt ' mot "
'Öppna en koppling till DB
SET Conn = System_Main()
'Kör SQL och sätt ett RecordSet
Dim SQL
SQL = "SELECT * FROM tblCommunity WHERE username = '" & strAnvNamn _
& "' AND password = '" & strLosen & "'"
Set RS= Server.CreateObject("ADODB.RecordSet")
RS.Open SQL, Conn, 3, 3
'Sätt Sessionsvariabler
If NOT RS.EOF THEN
Session("inloggad") = True
Session("ID") = RS("ID")
Session("username") = RS("username")
'Uppdatera databasen
Dim Update
conn.Execute("Update tblCommunity SET inloggad = True WHERE ID= " & RS("ID") &"")
'Kolla om man ska vidare eller komma till en errorsida
Response.Redirect "/community/index.asp"
Else
Response.Redirect "/community/error.asp"
End If
conn.Execute(SQL)
strUser = " & RS(username) & "
RS.Close
Set RS = Nothing
conn.Close
Set conn = Nothing
%>
@ndersMedlem sedan juni 200032 969 inlägg På vilket sätt fungerar det inte? Vad händer? Felmeddelande? Hur ser utskriven SQL-fråga ut?
- - - - - -
*) Du bör inte byta ut apostrofer mot citationstecken. Escape:a de bara, genom att byta ut en till två.
*) Du skriver Dim Update men använder aldrig den variabeln. Släng bort.
*) Under dina response.redirect ser det ut så här:
conn.Execute(SQL)
strUser = " & RS(username) & "
Jag förstår inte varför du bara exekverar din select-fråga igen (släng bort), och den undre raden, vad använder du den till? Om du senare i koden ska använda den variabeln, då borde den se ut så här:
strUser = RS(username)
Släng annars bort även den raden.
@nders skrev:
På vilket sätt fungerar det inte? Vad händer? Felmeddelande? Hur ser utskriven SQL-fråga ut?
- - - - - -
*) Du bör inte byta ut apostrofer mot citationstecken. Escape:a de bara, genom att byta ut en till två.
*) Du skriver Dim Update men använder aldrig den variabeln. Släng bort.
*) Under dina response.redirect ser det ut så här:
conn.Execute(SQL)
strUser = " & RS(username) & "
Jag förstår inte varför du bara exekverar din select-fråga igen (släng bort), och den undre raden, vad använder du den till? Om du senare i koden ska använda den variabeln, då borde den se ut så här:
strUser = RS(username)
Släng annars bort även den raden.
Jag blir bara redirectad tillbaka till inloggningsformen, trots att det inte står nånstans i koden, det gör att jag inte kan få felmeddelande och eftersom jag inte har nån html i koden så går det inte att skriva ut satsen
@ndersMedlem sedan juni 200032 969 inlägg
det gör att jag inte kan få felmeddelande och eftersom jag inte har nån html i koden så går det inte att skriva ut satsen
Hmmmm... :o
Var finns inloggningsformuläret? Är det all kod på sidan?
- - - - - -
Jag har förenklat din kod en aning.
<%
'Deklarera några av variablerna
Dim strAnvNamn, strLosen, conn, RS
'Hämta info från formulären
strAnvNamn = Replace(Trim(Request.Form("txtUsername")), "'", "''")
strLosen = Replace(Trim(Request.Form("txtPassword")), "'", "''")
'Öppna en koppling till DB
SET Conn = System_Main()
'Kör SQL och sätt ett RecordSet
Dim SQL
SQL = "SELECT * FROM tblCommunity WHERE username = '" & strAnvNamn _
& "' AND password = '" & strLosen & "'"
[b]Response.write SQL
Response.End[/b]
Set RS= Conn.Execute(SQL)
'Sätt Sessionsvariabler
If NOT RS.EOF THEN
Session("inloggad") = True
Session("ID") = RS("ID")
Session("username") = RS("username")
'Uppdatera databasen
conn.Execute("Update tblCommunity SET inloggad = True WHERE ID= " & RS("ID"))
'Kolla om man ska vidare eller komma till en errorsida
Response.Redirect "/community/index.asp"
Else
Response.Redirect "/community/error.asp"
End If
RS.Close
Set RS = Nothing
conn.Close
Set conn = Nothing
%>
När jag nu skriver ut satsen får jag SELECT * FROM tblCommunity WHERE username = 'guest' AND password = 'guest' och värdena hänger med fast jag fortfarande bara kommer tillbaka till inloggningsformen. Jag har loginform.asp som skickas till login.asp för verifiering
Tack @nders
Det var en redirect på indexfilen som spökade, den ska förhindra att man kommer in om man inte är inloggad
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Kompletterande fråga:
Vilken nytta gör
RS.Close
Set RS = Nothing
conn.Close
Set conn = Nothing
där det står nu?
Kom på mig själv med att ha det så, flyttade upp det före Redirect.
Engine^Medlem sedan dec. 20003 887 inlägg Det kasserar objektet och frigör det minne som användes av objektet.
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Jo, det är jag med på, men där det står?
Redirecten körs, och sedan körs inte mer av koden på den sidan, har jag fått för mig?
J.N. skrev:
HEJ!
Jo, det är jag med på, men där det står?
Redirecten körs, och sedan körs inte mer av koden på den sidan, har jag fått för mig?
Det är ju inloggningen, när man loggas in så förstörs objektet då det inte behövs längre
@ndersMedlem sedan juni 200032 969 inlägg
Redirecten körs, och sedan körs inte mer av koden på den sidan, har jag fått för mig?
Det är riktigt.
Det är ju inloggningen, när man loggas in så förstörs objektet då det inte behövs längre
Bra tänkt, men redirecten körs ju först, vilket innebär att objekten aldrig förstörs. Kör den koden innan redirecten så blir det bäst.
mvh