webForumDet fria alternativet

Inloggningsproblem

10 svar · 270 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#1

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
#2

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.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#3

@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
#4

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 
%>
WebbisNetMedlem sedan feb. 20032 027 inlägg
#5

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

WebbisNetMedlem sedan feb. 20032 027 inlägg
#6

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
#7

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
#8

Det kasserar objektet och frigör det minne som användes av objektet.

J.N.Medlem sedan apr. 20031 660 inlägg
#9

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?

WebbisNetMedlem sedan feb. 20032 027 inlägg
#10

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
#11

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

137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)