Problem med validering av användarid...

ASP

7 svar · 221 visningar · startad av LearningASP

Medlem sedan okt. 2001127 inlägg
Trådstart#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???

Medlem sedan okt. 20005 273 inlägg
#2

hur ser det ut om du skriver

Response.Write SQL

Raden efter SQL-satsen?

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
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??

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

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

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?

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

259 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)