scoxiMedlem sedan jan. 200460 inlägg <% If Request.QueryString("login") = "yes" Then %>
<% Check = "Select * FROM users"
RecSet.Open Check, Connect, adOpenStatic, adLockOptimistic
RecSet("username") = Request.Form("username")
RecSet("password") = Request.Form("password") %>
<% If RecSet("username") = Request.Form("username") AND RecSet("password") = Request.Form("password") Then %>
rätt
<% Else %>
fel
<% End If %>
<% End If %>
Jag har öppnat databasen tidigare.
Felet blir det att oavsett man skriver rätt eller fel lösenord kommer man till "rätt"..
Jag har gjort på detta sätt tidigare och jag har även kollat på många andra som gjort på ett liknande sätt fast då loopade man det och jag har lyckats med det utan loop
:bla
PoffeMedlem sedan apr. 20022 743 inlägg Nja, det tvivlar jag på att du gjort! Som du gär nu är att du sätter RecSet("username") och RecSet("password") till vårdena du får från formuläret och sen kollar du om det är de värderna, klart att man kommer in då.
SannyWMedlem sedan jan. 2003438 inlägg Vad händer om du ändrar till detta?
<% If Request.QueryString("login") = "yes" Then %>
<% Check = "Select * FROM users"
RecSet.Open Check, Connect, adOpenStatic, adLockOptimistic
%>
<% If RecSet("username") = Request.Form("username") AND RecSet("password") = Request.Form("password") Then %>
rätt
<% Else %>
fel
<% End If %>
<% End If %>
scoxiMedlem sedan jan. 200460 inlägg Om jag gör som SannyW kommer man till "fel" oavsett rätt anv och lösen
jonnyzMedlem sedan okt. 2004502 inlägg Om du gör så här då (har inte provkört):
<% If Request.QueryString("login") = "yes" Then %>
<% Check = "Select * FROM users WHERE username='" & Request.Form("username") & "'"
RecSet.Open Check, Connect, adOpenStatic, adLockOptimistic
If RecSet("password") = Request.Form("password") Then %>
rätt
<% Else %>
fel
<% End If %>
<% End If %>
SannyWMedlem sedan jan. 2003438 inlägg Jag ändrade lite och har nu testat, det skall funka
Kontrollera databasen.
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Check = "Select * FROM users"
RecSet.Open Check, Connect, 1, 2
%>
<% If RecSet("username") = Request.Form("username") AND RecSet("password") = Request.Form("password") Then %>
rätt
<% Else %>
fel
<% End If %>
PoffeMedlem sedan apr. 20022 743 inlägg Dock med era koder kollar den bara första användaren i databasen. Har man fler användare fungerar det alltså inte.
SannyWMedlem sedan jan. 2003438 inlägg Är kanske inte med på vad Poffe menar riktigt, det är sant att mitt förslag endast fungerar på en användare.
Men jonnyz skall väl fungera?
Jag ändrade lite och kom fram till följande, om du nu har fler användare:
<%
' För hindrar dubbelsnuttar i fälten
Function escape(input)
input = Replace(input, "'", "''")
escape = input
End Function
' Kan byggas på att om fälten är tomma så kör man redirect
if Request.Form("username") = "" AND Request.Form("password") = "" then
Response.Redirect "login.asp"
End if
Set RecSet = Server.CreateObject("ADODB.Recordset")
Check = "Select * FROM users WHERE username='" & escape(Request.Form("username")) & "'"
RecSet.Open Check, Connect, 1, 2
If NOT RecSet.EOF Then
If RecSet("password") = Request.Form("password") Then %>
rätt lösenord
<% Else %>
fel lösenord
<% End If %>
<%ELSE%>
Ooops! Fel användare
<%END IF%>
Det du kan förändra med
Ooops! Fel användare
att lägga in en redirect istället.
Detta är ett förslag, det borde funka då jag själv har testat det lite snabbt.
PoffeMedlem sedan apr. 20022 743 inlägg Japp, jonnyz fungerar så klart.
Var jag som läste slarvigt, sorry =)
@ndersMedlem sedan juni 200032 969 inlägg Man ställer självklart villkor på både användarnamn och lösenord direkt i SQL-frågan.
http://www.webforum.nu/showthread.php?s=&postid=956094#post956094
liljaMedlem sedan juli 20041 183 inlägg din Check variabel borde ändras till SQL efterssom det är SQL-kod du lagrar i den variabeln...
du borde också plocka bort ' och " tecken ifrån indatan efterssom en användare annars kan skriva diverse elak kod och hacka sig in på sidan...
ex.
username = ' or username <> '''
password = ''
tror man ska kunna koma in om man skriver så... om du då byter ut ett citatecken mot två så ska det vara relativt säkert... säger relativt ;)
tNickName = Replace(Request.Form("tNickName"),"'","''")
tNickName = Replace(Request.Form("tNickName"),"""","''")
tUserPassword = Replace(Request.Form("tUserPassword"),"'","''")
tUserPassword = Replace(Request.Form("tUserPassword"),"""","''")
@ndersMedlem sedan juni 200032 969 inlägg Varför tycker du att man ska byta bort citationstecken? Att förvränga informationen är fel. Citationstecken är inte ett problem.