Jag har gjort ett inloggningsscript som man kan logga in på några sidor. Mit problem är registreringen när man kollar om användarnamnet redan finns. När man loggar in spelar det ingen roll om du skriver "Användarnamn" eller "användarnamn" men när du registrerar så har jag gjort en loop som kollar om användarnamnet finns men den skiljer på stora och små bokstäver. Detta gör att det kan finnas en användare som heter "Kalle" och en som heter "kalle", hur gör man så att loopen inte skiljer på stora och små bokstäver. Den ser ut följande:
SQLStmt = "SELECT * From Users"
Set RS = Connection.Execute(SQLStmt)
Do Until RS.EOF
If Request.Form("username") = RS("username") Then
Response.redirect("loggin.asp")
End If
RS.Movenext
Loop
är det inte enklare att göra jämförelsen direkt i sql-frågan?
SQLStmt = "SELECT * From Users WHERE UCASE (username) = '" & UCASE (Request.Form("username")) & "'"
ovanstående sql-fråga hämtar allt där användarnamnet finns. får du då ingenting tillbaks så är användarnamnet ledigt. smidigt, va? ;) å kejs insensitive.
jag har förutsatt att du använder access, om du använder sql-server heter
motsvarigheten till UCASE() UPPER().
Prova detta det funkar för mig!
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("din databas här"))
SQL="SELECT * from login WHERE login='" & request.form("login") &"'"
set rs=connection.execute(SQL)
if not rs.eof then
response.redirect "upptaget.asp"
end if
det funkar för mig glömm inte byta ut upptaget.asp till din sida