... vill att några sidor ska kräva medlemsregistrering! Jag vet själv hur jag ska lagra användarna och deras lösenord i databasen men sedan börjar problemen:
1. Hur ska jag göra så att inte flera användare kan ha samma användarnamn?
2. Jag hade tänkt lagra id & pass i en databas men också lägga det i en cookie. Hur "prånglar" jag in det där och hur gör jag för att sedan jämföra (för det är väl det jag måste) om det i Cookien stämmer överens med det i databasen eller inte?
1. gör en jämförelse med databasen.. om namnet redan finns så ska det bli ett felmeddelande.
If Not Isnull(Request.Form("Username")) Then strUsername = Cstr(Request.Form("Username"))
SQL = "SELECT f_User FROM t_Members where f_User = '" & strUsername & "'"
set rs = Connect.Execute(SQL)
If Not rs.EOF Then
While Not rs.EOF
If LCase(RS("f_User")) = LCase(strUsername) Then
response.write "Användarnamnet är upptaget"
End If
rs.movenext
Wend
Else
'här utförs inmatningen i databasen
End If
2. Varför inte sätta ett värde till tex YES .. sen kontrollera om det stämmer på dom sidorna där bara inloggade ska ha tillgång..
Response.Cookies("Login")("User") = "Yes"
och när du kollar om värdet stämmer skriver du överst på sidan
Du kan definiera i databasen att kolumnen för användarnamn bara får innehålla unika värden. Det behövs lite felhantering för att fånga upp att det inträffar. (Felhantering behövs i alla fall så det är ingen nackdel egentligen.)
Du kan också lägga till en kontroll innan lagringen om det valda namnet finns
query = "select 1 from users where username = '" & request.form("username")
set rs = connect.execute(query)
if not rs.eof then
response.write "Namnet är upptaget, vänligen välj ett annat <br>"
response.end
end if
Att lägga in password i en cookie är inte bra och fyller ingen direkt function.
Några frågor ang. din kod:
Vad gör IsNull på första rade egentligen?
vad gör "Wend"?
Sedan förstår jag inte riktigt svaret på 2:an. Hur ska jag sätta det till Yes! Jag förstår hur jag gör det just på den sidan där man registrerar sig men måste man då sedan hålla på och skicka det med en QueryString hel tiden eller?