webForumDet fria alternativet

Får inte ordning på min login

ASP

12 svar · 380 visningar · startad av Gossard

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

Hejsan!

Jag sitter och knappar på en "loginsida", men får inte ordning på det. Har provat lite olika varianter, men det vill sig inte. Någon som kan se vad som är fel i följande kod, får följande fel: Formatet på initieringssträngen följer inte OLE DB-specifikationen. Rad 27 .

Kod:

<html>
<head>
<title>Login...</title>
</head>

<body>
<%
If Request.Querystring("do") = "" Then
'formularet
Response.Write "<form method=""post"" action=""login.asp?do=login"">"
Response.Write "<p>"
Response.Write "Användarnamn: <input type=""text"" name=""anvandare"" size=""25""><br>"
Response.Write "Lösen: <input type=""password"" name=""losenord"" size=""25""><br>"

Response.Write "<input type=""submit"" value=""Logga in"">"
Response.Write "</p>"
Response.Write "</form>"

Else
'Behandlar formularet
Dim objConn, objRS

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../klubben.mdb")&";"

Set objRS = Server.CreateObject ("ADODB.Connection")

namn = Request.Form("anvandare")
losen = Request.Form("losenord")

SQL = "SELECT anvandare,losenord FROM medlemmar WHERE anvandare = namn AND losenord = losen"
RecSet.Open SQL, Conn, 3,3

If objRS.EOF Then
Response.Redirect "login.asp"
Else
Session("inloggad") = True
Session("anvandare") = namn
SQL = "UPDATE medlemmar SET status = status + 1 WHERE anvandare = namn"
objConn.Execute(SQL)
Response.Redirect "medlem.asp"
End If

objRS.Close
objConn.Close

Set objRS = Nothing
Set obj.Conn = Nothing

End If
%>

</body>
</html>

Rad 27: RecSet.Open SQL, Conn

Tacksam för hjälp

/Gossard

Medlem sedan juni 20019 519 inlägg
#2

ändra recset till objrs
och Conn till objconn

Medlem sedan juni 200219 inlägg
#3

Oj, slarv av mig. Fixat, men koden hänger upp sig på "Åtgärden är inte tillåten när objektet är stängt", på raden "If objRS.EOF Then ".

Det verkar som den inte tar if-satsen alls, då jag provat skriva rätt uppgifter i formuläret.

/Gossard

Medlem sedan feb. 200112 078 inlägg
#4

Posta din kod igen, denna gång med de korrekta ändringarna och inom KOD och /KOD-taggarna. :)

Medlem sedan juni 200219 inlägg
#5

OK, kommer här:

<html>
<head>
<title>Login...</title>
</head>

<body>
<%
If Request.Querystring("do") = "" Then
'formularet
Response.Write "<form method=""post"" action=""login2.asp?do=login"">"
Response.Write "<p>"
Response.Write "Anv&auml;ndarnamn: <input type=""text"" name=""anvandare"" size=""25""><br>"
Response.Write "L&ouml;sen: <input type=""password"" name=""losenord"" size=""25""><br>"

Response.Write "<input type=""submit"" value=""Logga in"">"
Response.Write "</p>"
Response.Write "</form>"

ElseIF Request.Querystring("do") = "login" Then
'Behandlar formularet
Dim objConn, objRS

Set objConn = Server.CreateObject("ADODB.Connection") 
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../klubben.mdb")&";"

Set objRS = Server.CreateObject ("ADODB.Connection")

	namn = Request.Form("anvandare")
	losen = Request.Form("losenord")
	
SQL = "SELECT anvandare,losenord FROM medlemmar WHERE anvandare = namn AND losenord = losen"
objRS.Open SQL, objConn, 3,3

	If objRS.EOF Then
	Response.Redirect "login.asp"
	Else
	Session("inloggad") = True
	Session("anvandare") = namn
	SQL = "UPDATE medlemmar SET status = status + 1 WHERE anvandare = namn"
	objConn.Execute(SQL)
	Response.Redirect "medlem.asp"
	End If

objRS.Close
objConn.Close

Set objRS = Nothing
Set obj.Conn = Nothing

End If
%>

</body>
</html>
Medlem sedan juni 20019 519 inlägg
#6

kan det vara så att login.asp är samma sida som den du har denna kod på?.. kan du inte testa att skriva response.write "Fel lösenord eller Användare" istället?

Medlem sedan feb. 200112 078 inlägg
#7

Oj oj. Annorlunda fel. ;)

Byt ut detta

Set objRS = Server.CreateObject ("ADODB.Connection")

mot detta

Set objRS = Server.CreateObject ("ADODB.RecordSet")

Just nu är 'objRs' ett ADODB Connection-objekt, när det skall vara ett Recordset. :)

Medlem sedan juni 200219 inlägg
#8

viogtann1: Fel av mig igen, det skulle givetvis stå login2.asp, så man kommer tillbaka till inloggningsforumuläret. Provade sätta Response.Write istället, för att se om den tog det, men icke.

Får tidigare felmeddelande:

Feltyp:
ADODB.Connection (0x800A0E78)
Åtgärden är inte tillåten när objektet är stängt.
/tbp/login2.asp, line 34

..som är första raden i if-satsen som kollar losen och namn.

/Gossard

Medlem sedan feb. 200112 078 inlägg
#9

Se lösningen ovan. ;)

Medlem sedan juni 200219 inlägg
#10

Det tar sig...

Sorry för alla inlägg, men bytade som du sa OveRRidE, men hänger sig på rad 32:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 2 förväntades.
/tbp/login2.asp, line 32

KODEN:

objRS.Open SQL, objConn, 3,3

Ska villigt erkänna att jag är osäker på hela SQL-biten, men tacksam för att ni vill hjälpa till.:OO

/Gossard

Medlem sedan mars 2002777 inlägg
#11

Inget med felet att göra, men för att vara på säkra sidan hade jag bytt:

namn = Request.Form("anvandare")
losen = Request.Form("losenord")

mot

namn = replace(Request.Form("anvandare"),"'","''")
losen = replace(Request.Form("losenord"),"'","''")
Medlem sedan mars 2002777 inlägg
#12

Re: Det tar sig...

Gossard skrev:

Sorry för alla inlägg, men bytade som du sa OveRRidE, men hänger sig på rad 32:

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 2 förväntades.
/tbp/login2.asp, line 32

KODEN:

objRS.Open SQL, objConn, 3,3

Ska villigt erkänna att jag är osäker på hela SQL-biten, men tacksam för att ni vill hjälpa till.:OO

/Gossard

Har du stavat alla fältnamn, objektnamn och kolumnnamn rätt?

Medlem sedan feb. 200112 078 inlägg
#13

Mja.. det här ser inte så bra ut..

SQL = "SELECT anvandare,losenord FROM medlemmar WHERE anvandare = namn AND losenord = losen"

När du infogar variabler i en SQL-sträng (som faktiskt ju är en vanlig textsträng innan exekvering) måste du vara noga med att se till att variabeln verkligen kommer med, om du förstår vad jag menar. ;) :p Just nu tror strängen att du vill välja allt från tabellen 'medlemmar' där kolumnen 'användare' är "namn" och kolumnen 'losenord' är "losen". Förstår du vad jag menar?

Med andra ord:

SQL = "SELECT anvandare, losenord FROM medlemmar WHERE anvandare = '" &  namn & "' AND losenord = '" & losen & "' "

Detta är under förutsättning att kolumnerna 'anvandare' och 'losenord' är av datatypen Text i din databashanterare. :)

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)