webForumDet fria alternativet

Text som inte ska vara där

ASP

12 svar · 708 visningar · startad av Lorelie

Medlem sedan juni 2005264 inlägg
Frågan#1

Har gjort en inloggningssida som ser utsåhär http://www.aramennoc.se/inlogin.asp

men så ska den ju inte se ut... Varför står texten om fel lösen där?
Det har fungerat som det ska innan, men jag vet inte vad som gick snett.


If Not data.EOF Then
		If data("losenord")=Request.Form("Losenord") Then
			Session("MedlemsID") = data("MedlemsID")
			Response.Redirect "laggtill.asp"
			Response.End
		Else
			wrong = "Du har nog inte angett rätt användarnamn!"
			response.write wrong
		End If
	Else
		wrong = "Du har nog inte angett rätt lösenord!"
		response.write wrong
	End If
Medlem sedan juni 20019 519 inlägg
#2

Du laddar din databas innan du loggar in... så då är ju data.EOF därför får du response.write wrong vid else

Du får ha kanske:

if reqeust.form("losenord") <> "" and request.form("Anvandarnamn") <> "" then
..... kör SQL frågan och hela den kod du visar just nu på inlägg #1
end if

Du vill ju inte ladda databasen i onödan och inte heller förrän formuläret för lösenordet och användarnamnet är "något"

Medlem sedan apr. 20031 660 inlägg
#3

HEJ!

Det finns inget recordset, då kommer du dit i if-satsen.

Utan att se hur du gjort, kan du inte veta att lösenordet är fel pga recordsetet inte fungerar, det kan ju även vara användarnamnet.

Hmmm, det verkar som du först kontrollerar om användarnamnet finns, och sedan lösenordet. Så kan du inte göra, då kan man korsa användarnamn med lösenord som man vill och logga in!
(Det är ett klassiskt kodexempelfel från IDG!)

Kontrollera inloggningsrättigheter genom att hämta båda två i samma fråga.

Medlem sedan juni 2005264 inlägg
#4

J.N. skrev:

HEJ!

Det finns inget recordset, då kommer du dit i if-satsen.

Utan att se hur du gjort, kan du inte veta att lösenordet är fel pga recordsetet inte fungerar, det kan ju även vara användarnamnet.

Hmmm, det verkar som du först kontrollerar om användarnamnet finns, och sedan lösenordet. Så kan du inte göra, då kan man korsa användarnamn med lösenord som man vill och logga in!
(Det är ett klassiskt kodexempelfel från IDG!)

Kontrollera inloggningsrättigheter genom att hämta båda två i samma fråga.

Kan du möblera om och visa hur du menar? (Jag är nyyybörjare på asp...)


<%
sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & Replace(Request.Form("Anvandarnamn"), "'", "''") & "'"

set data = MinCon.execute(sql)

If Not data.EOF Then
		If data("losenord")=Request.Form("Losenord") Then
			Session("MedlemsID") = data("MedlemsID")
			Response.Redirect "laggtill.asp"
			Response.End
		Else
			wrong = "Du har nog inte angett rätt användarnamn!"
			response.write wrong
		End If
	Else
		wrong = "Du har nog inte angett rätt lösenord!"
		response.write wrong
	End If

%>
Medlem sedan juni 20019 519 inlägg
#5
<%

if request.form("losenord") <> "" and request.form("Anvandarnamn") <> "" then
  sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & Replace(Request.Form("Anvandarnamn"), "'", "''") & "'  AND losenord = '" & Replace(Request.Form("Losenord"), "'", "''") &"'"
  set data = MinCon.execute(sql)
    If Not data.EOF Then
      Session("MedlemsID") = data("MedlemsID")
      Response.Redirect "laggtill.asp"
      Response.End
    Else
      wrong = "Du har nog inte angett rätt användarnamn eller Lösenord!"
      response.write wrong
    End If
End If

%>

hade jag gjort.. och varför använder du inte SafeSQL() som du gör på den andra inlägget du har gjort på wF... du vill inte ha SQLInjection här heller ;)

Medlem sedan apr. 20031 660 inlägg
#6

Lägg till ... AND losenord=Request.Form("Losenord") ... i din WHERE-sats, och din Replace-funktion runt den.

Tag sedan bort else-satsen med lösenords-texten.

Bör fungera, men du kommer ju, som voigtann1 påpekar, belasta servern med en fråga fast du inte försökt logga in.

När detta fungerar, kan du fundera på att flytta inloggningskoden till en separat fil, om du vill.
I den kör du response.redirect i en ifsats till inloggad.asp eller tillbaka till inloggninssidan om det är fel.
Finns exempel på wF hur detta ser ut.

Medlem sedan juni 2005264 inlägg
#7

voigtann1 skrev:

<%

if request.form("losenord") <> "" and request.form("Anvandarnamn") <> "" then
  sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & Replace(Request.Form("Anvandarnamn"), "'", "''") & "'  AND losenord = '" & Replace(Request.Form("Anvandarnamn"), "'", "''") &"'"
  set data = MinCon.execute(sql)
    If Not data.EOF Then
      Session("MedlemsID") = data("MedlemsID")
      Response.Redirect "laggtill.asp"
      Response.End
    Else
      wrong = "Du har nog inte angett rätt användarnamn eller Lösenord!"
      response.write wrong
    End If
End If

%>

hade jag gjort.. och varför använder du inte SafeSQL() som du gör på den andra inlägget du har gjort på wF... du vill inte ha SQLInjection här heller ;)

Jo, det kanske jag skulle ha, har inte kommit så långt i funderingarna ännu ;)

(Edit, först funkade det inte, sen såg jag att det stod anvandarnamn i lösenordsrutan också, ändrade till losenord och sen funkade det)

Medlem sedan juni 20019 519 inlägg
#8

förlåt... Copy paste... om du kollar "And Losen.." & request.form("anvandarnamn") ... det ska ju vara losenord :D förlåt ;)

Har redigerat mitt förra inlägg så det ska vara rätt nu :D

Medlem sedan juni 2005264 inlägg
#9

voigtann1 skrev:

förlåt... Copy paste... om du kollar "And Losen.." & request.form("anvandarnamn") ... det ska ju vara losenord :D förlåt ;)

Har redigerat mitt förra inlägg så det ska vara rätt nu :D

Hann se det innan du skrev svaret =)

Ska se om jag får dit '-grejen också....

Medlem sedan juni 20019 519 inlägg
#10

Lorelie skrev:

Ska se om jag får dit '-grejen också....

Det fixar nu garanterat ;)

Medlem sedan juni 2005264 inlägg
#11

voigtann1 skrev:

Det fixar nu garanterat ;)

:r .. Nej =P

  sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & SafeSQL Replace(Request.Form("Anvandarnamn"), "'", "''") & "'  AND losenord = '" & SafeSQL Replace(Request.Form("losenord"), "'", "''") &"'"

Den säger att det är fel där någonstans...

"Expected 'End'" men var?

Medlem sedan dec. 19996 721 inlägg
#12

Du glömde parenteserna, och dessutom ska du inte ha både SafeSQL och replace.

sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & SafeSQL(Request.Form("Anvandarnamn")) & "'  AND losenord = '" & SafeSQL(Request.Form("losenord")) &"'"
Medlem sedan juni 2005264 inlägg
#13

emission skrev:

Du glömde parenteserna, och dessutom ska du inte ha både SafeSQL och replace.

sql = "SELECT * FROM anvandare WHERE anvandarnamn='" & SafeSQL(Request.Form("Anvandarnamn")) & "'  AND losenord = '" & SafeSQL(Request.Form("losenord")) &"'"

Tack :e

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)