sin_adecMedlem sedan apr. 2002272 inlägg Hej!
alla programmerare & webbdesigners..
jag försöker skapa ett inloggninssystem... förstår inte vad som är fel..
jag har 2 konton i databasen... men det uppstår fel.. bara den som högst upp på databasen kan logga in..
fattar inte varför.. så här ser min kod..
<% Dim Con
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("test.mdb") &";pwd="
SQL ="Select * from test"
Set Recset = Con.Execute(SQL)
%>
<% if recset("anv") = request.form("anv") AND recset("losen") = Request.form("losen") then
session("id") = recset("id")
response.redirect "visa.asp"
recset.close
Set recset = nothing
Con.Close
Set Con = nothing
Else
response.redirect "skriv.asp"
%>
<% end if %>
det finns 2 medlemmar som jag har skapat för att testa..
men det är bara
användare 1 som kan logga in..
ID Anv Losen
1 123 123
2 321 321
alltså det är bara medlem "1" som kan logga in...
why
aleborgMedlem sedan jan. 20013 341 inlägg SQL ="Select * from test Where Anv='"& Replace(request.form("anv"), "'", "''") &"' And Losen='"& Replace(request.form("losen"), "'", "''") &"'"
vad händer om användaren inte finns i databasen?
[red]<% Dim Con
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("test.mdb") &";pwd="
SQL ="Select * from test"
Set Recset = Con.Execute(SQL)
do while not recset.eof = true
if recset("anv") = request.form("anv") AND recset("losen") = Request.form("losen") then
session("id") = recset("id")
exit do
Else
recset.movenext
end if
loop
recset.close
Set recset = nothing
Con.Close
Set Con = nothing
if len ( session ( "anv" ) ) > 0 then
response.redirect "visa.asp"
else
response.redirect "skriv.asp
end if %>[/red]
ctrl+c & ctrl+v:ade mycket... vet inte om det är helt korrect :)
LAMPMedlem sedan mars 2002777 inlägg oj, vilken omständig kod :o
Du får lägga till en funktion som escapar ' tecken
' öppna ett connectionobjekt vid namn Connect
dim strUsername, strPassword, rs, sql
strUsername = request.form("user")
strPassword = request.form("pass")
sql ="SELECT intAnvId, strUsername, strPassword FROM table WHERE strUsername = '" & strUsername & "' and strPassword = '" & strPassword & "' "
set rs = Connect.execute(sql)
if rs.eof then
response.write "felaktig inloggning"
else
session("inloggad") = rs("intAnvId")
end if
rs.close()
set rs = nothing
Connect.close()
set Connect = nothing
RED: stavfel
aleborgMedlem sedan jan. 20013 341 inlägg Använd det här:
<%
If request.form("anv")<>"" And request.form("losen")<>"" Then
Dim Con
Dim Recset
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("test.mdb") &";pwd="
SQL ="Select * from test Where Anv='"& Replace(request.form("anv"), "'", "''") &"' And Losen='"& Replace(request.form("losen"), "'", "''") &"'"
Set Recset = Con.Execute(SQL)
If Not Recset.EOF Then
session("id") = Recset("id")
Response.Redirect("inloggad.asp")
Else
Response.Redirect("error.asp")
end if
Recset.close
Set Recset = nothing
Con.Close
Set Con = nothing
End If
%>
På alla sidor som man måste vara inloggad för att kunna se sätter du det här överst:
<%
If not session("id")<>"" Then
Response.Redirect "logga_in.asp"
End If
%>
LAMPMedlem sedan mars 2002777 inlägg Blir ju lite omständigt att göra replacen på ' i varje sql-sats, bättre med en funktion:
Function FixaTecken(sText)
sText = replace(sText,"'","''")
FixaTecken = sText
End Function
sedan hör det till god programmeringssed att lägga sina värde från t ex request.form i egna variabler ;)
RED: då blir min förra kod enligt:
' lägges med fördel i en include fil
Function FixaTecken(sText)
sText = replace(sText,"'","''")
FixaTecken = sText
End Function
' öppna ett connectionobjekt vid namn Connect
dim strUsername, strPassword, rs, sql
strUsername = FixaTecken(request.form("user"))
strPassword = FixaTecken(request.form("pass"))
sql ="SELECT intAnvId, strUsername, strPassword FROM table WHERE strUsername = '" & strUsername & "' and strPassword = '" & strPassword & "' "
set rs = Connect.execute(sql)
if rs.eof then
response.write "felaktig inloggning"
else
session("inloggad") = rs("intAnvId")
end if
rs.close()
set rs = nothing
Connect.close()
set Connect = nothing