webForumDet fria alternativet

Inloggning.

ASP

11 svar · 352 visningar · startad av scoxi

Medlem sedan jan. 200460 inlägg
Frågan#1
<% 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

Medlem sedan apr. 20022 743 inlägg
#2

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å.

Medlem sedan jan. 2003438 inlägg
#3

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 %>
Medlem sedan jan. 200460 inlägg
#4

Om jag gör som SannyW kommer man till "fel" oavsett rätt anv och lösen

Medlem sedan okt. 2004502 inlägg
#5

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 %>
Medlem sedan jan. 2003438 inlägg
#6

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 %>
Medlem sedan apr. 20022 743 inlägg
#7

Dock med era koder kollar den bara första användaren i databasen. Har man fler användare fungerar det alltså inte.

Medlem sedan jan. 2003438 inlägg
#8

Ä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.

Medlem sedan apr. 20022 743 inlägg
#9

Japp, jonnyz fungerar så klart.
Var jag som läste slarvigt, sorry =)

Medlem sedan juni 200032 967 inlägg
#10

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

Medlem sedan juli 20041 183 inlägg
#11

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"),"""","''")
Medlem sedan juni 200032 967 inlägg
#12

Varför tycker du att man ska byta bort citationstecken? Att förvränga informationen är fel. Citationstecken är inte ett problem.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)