webForumDet fria alternativet

Problem med validering av användarid...

ASP

7 svar · 189 visningar · startad av LearningASP

Medlem sedan okt. 2001127 inlägg
Frågan#1

Jag har en inloggningssida, som man fyller i ett användarid och detta är det unika indexet i databasen som består av en räknare. så när man fyller i med bokstäver i användarid fältet och ska logga in så får man fäljande fel och det är ju inte så snyggt man vill ju ha att det kommer ett mer användarvänligt felmeddelande ;)

Microsoft OLE DB Provider for ODBC Drivers fel '80040e10' 

[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades. 

/porsche/login/login_ok.asp, line 30

min SQL

SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = " & strAnvID & " AND Rs_Losen = '" & strLosen & "' "

Tack på förhand
hur löser man det???

------------------
Varje dag är en ny lektion ;)

Medlem sedan okt. 20005 273 inlägg
#2

hur ser det ut om du skriver

Response.Write SQL

Raden efter SQL-satsen?

------------------
kolung.....det tål att tänkas på!

Medlem sedan okt. 2001127 inlägg
#3

så här ser hela koden ut

<%
	
	
	If Request.Form("FormAnvID") = "" AND Request.Form("FormLosen") = "" Then
		Response.Redirect "login.asp?fel=both"
	ElseIF Request.Form("FormAnvID") = "" Then
		Response.Redirect "login.asp?fel=AnvID"
	ElseIF Request.Form("FormLosen") = "" Then
		Response.Redirect "login.asp?fel=Losen"
	End If

	Dim strAnvID, strLosen, ObjConn, SQL, rs
	
	strAnvID = Request.Form("FormAnvID")
	strLosen = Request.Form("FormLosen")

	Set objConn = Server.CreateObject("ADODB.Connection")
	objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\crystal\databas\annonser.mdb" 
	SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = " & strAnvID & " AND Rs_Losen = '" & strLosen & "' "
	Response.Write " " & SQL & ""
	set rs = objConn.Execute(SQL)
	If RS.EOF Then
	'felaktigt inloggning
	Response.Redirect "login.asp?fel=inlogning"
	Else
	'allt är i sin ordning
	Response.Write "Välkommen, Du är nu inloggad"
	id = strAnvID
	dim forsalj_id, id
	session("forsalj_id") = id
	End If
	%>
	<% if session("forsalj_id") then %>
		<script language = "JavaScript">
			parent.navframe.location.href="../nav/minsid.asp";
			parent.logoframe.location.href="../topp.asp";
		</script>
	<% End If %>

och detta felmeddelande får jag

SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = 123jhkjhk AND Rs_Losen = 'klhjgf' 
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14' 

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Rs_Forsalj_ID = 123jhkjhk AND Rs_Losen = 'klhjgf''. 

/porsche/login/login_ok.asp, line 34

------------------
Varje dag är en ny lektion ;)

Medlem sedan okt. 20005 273 inlägg
#4

Är inte användarnamn ett textfält om det är det ska det vara

SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = '" & strAnvID & "' AND Rs_Losen = '" & strLosen & "' "

Om inte så vad är det för fälttyper??

------------------
kolung.....det tål att tänkas på!

Medlem sedan okt. 2001127 inlägg
#5

Hmm :r strAnvID är inte riktigt rätt med str det ska vara intAnvID men datatypen är räknare så problemet är ju att den inte vill ta bokstäver

------------------
Varje dag är en ny lektion ;)

Medlem sedan mars 20002 836 inlägg
#6

Nu förstår inte jag.

Räknare är av typen tal och kan således inte ta text.
Du måste ta användar id'et och validera mot rätt fält, således kan inte intAnvID innehålla text om du ska validera mot räknar fältet.

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

Medlem sedan okt. 2001127 inlägg
#7

jo jag vet att man inte kan ha text när man validerar men jag vill att det ska bli ett "snyggare" felmeddelande när man "råkar" skriva in text i användarid då förstår Ni nu?

------------------
Varje dag är en ny lektion ;)

Medlem sedan mars 20002 836 inlägg
#8

Bara att checka strängen som kommer innan man öppnar connection/skapar recordsetet och exekverar sql-frågan:

If IsNumeric(Trim(strFirstName)) Then

'## -- är ju ett nummer och du kan köra valideringen --

Else

'## -- felmess --
Response.Write "HALLÅ!!! ingen text här tack!"
End If

cya,
PatrikB

------------------
-=* IF there is a wrong way to do something, then someone will do it *=-

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