Med hjälp från webforum har jag nu lyckats fixa en registrering på min hemsida så att man kan bli medlem. Alla medlemmarna och deras lösen lagras i en db och scriptet siger till då någon försöker registrera samma användare två gånger. Så långt, allt väl... men sen kommer jag till nästa krux; inloggning och utloggning!
Skulle någon kunna posta en bit kod där man i db:n jämför användarnamn och lösen och om dessa är korrekta så redirectas man!
Jag utgår ifrån att du har ett connectionobjekt, jag har kallat det för objConn. Det kan se ut någonting sånt här:
strUserName = Replace(Request.Form("username"), "'", "''")
strPassword = Replace(Request.Form("password"), "'", "''")
blnInloggad = False
strSQL = "SELECT 1 FROM tblUsers WHERE fldUserName = '" & strUserName & "' AND fldPassword = '" & strPassword & "'"
set objRS = objConn.Execute (strSQL)
If not objRS.EOF then
' jippi, inloggningen lyckades
blnInloggad = True
Else
' näppeligen!
' gör något annat
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
If blnInloggad then Response.redirect "Secure.asp"
Givetvis bör man sätta antingen sessions eller en cookie som hela tiden känner till inloggningsstatus, men det lämnas som övning. ;)
OBS! Koden är mycket otestad och skrevs ur huvudet. Du får ändra så tabell- och fältnamn stämmer.
Jag har två filer för det här. Väldigt enkelt och tydligt.
login.asp
-------------------------------
function teckenkoll(x)
x = REPLACE(x, "'", "''")
x = REPLACE(x, """, """")
end function
namn = teckenkoll(request.form("namn"))
pass = teckenkoll(request.form("pass"))
SET RS = conn.execute("SELECT namn, pass FROM users WHERE namn = '"&namn&"' AND pass = '"&pass&"' ")
if RS.eof then
' response.redirect("tillbax")
else
session("inloggad") = true
response.redirect("admin.asp")
end if
logout.asp
---------------------------
session.abandon
response.redirect("index.asp")
Sen kan du självklart själv bestämma vilka olika sessions du vill använda.
Ok, jag har gjort mitt bästa för att trixa ihop en inloggningsgrej men tyvärr så blir det inte riktigt rätt. Felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
/tjanster/inloggning.asp, line 11
Kod:
<html>
<%
strDBPathUsers = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\databas\main.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDBPathUsers
Set RecSet = Server.CreateObject("ADODB.Recordset")
strCheck = "SELECT username, password FROM medlemmar WHERE namn = '"&username&"' AND pass = '"&password&"' "
[b]RecSet.Open strCheck, Conn[/b]
Function teckenkoll ( x )
x = Replace ( x, "'", "'" )
teckenkoll = x
End Function
username = teckenkoll(request.form("username"))
password = teckenkoll(request.form("password"))
if RS.eof then
' response.redirect("tillbax")
else
session("inloggad") = true
response.redirect("admin.asp")
end if
%>
</html>
Det verkar vara två tabell- eller fältnamn som är felstavade / felskrivna. Kontrollera att de fält du försöker använda verkligen finns i tabellen, och att all stavning stämmer.
Du har använt olika namn i sql-frågan för både användarnamn och lösenord, vad gäller?
strCheck = "SELECT username, password FROM medlemmar WHERE namn = '"&username&"' AND pass = '"&password&"' "
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDBPathUsers
username = teckenkoll(request.form("username"))
password = teckenkoll(request.form("password"))
Set RecSet = Server.CreateObject("ADODB.Recordset")
strCheck = "SELECT username, password FROM medlemmar WHERE namn = '"&username&"' AND pass = '"&password&"' "
RecSet.Open strCheck, Conn
Function teckenkoll ( x )
x = Replace ( x, "'", "'" )
teckenkoll = x
End Function
if RS.eof then
' response.redirect("tillbax")
else
session("inloggad") = true
response.redirect("admin.asp")
end if
%>
Jo, namnen i SQL-satsen stämde inte med dem i databasen men nu till nästa problem! ;) Det står; Object required: " på denna rad:
if RS.eof then
... och jag frstår inte riktigt vad som menas med detta!