08. maj 2003 - 11:14Der er
8 kommentarer og 1 løsning
Access DB: Forbudte tegn i login-system
Jeg har lavet et login-system som fungerer perfekt, men der er stadig nogle ting jeg vil ha lavet om. F.eks., så er der nogle tegn som ikke må forekomme, når man opretter sig som bruger. Jeg har gjort at HTML bliver decoded når det bliver fundet, men det er ligesom ikke nok. Brugernavnet og password'et må kun indeholde følgende:
Bogstaver: a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, x, y, z, æ, ø, å
Tal: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Yderligere tegn: - og _
Forskellen på store og små bogstaver er ikke relevant. Dvs. bogstaverne foroven må både være store og små.
Her er koden: *********************************
<% 'form-kontrol udføres if request.form("username") = "" then response.redirect("/error.asp?content=newuser&error=tomuser") if request.form("kodeord") = "" then response.redirect("/error.asp?content=newuser&error=tompass") if request.form("username") = " " then response.redirect("/error.asp?content=newuser&error=tomuser") if request.form("kodeord") = " " then response.redirect("/error.asp?content=newuser&error=tompass") if request.form("email") = "" then response.redirect("/error.asp?content=newuser&error=tommail") if request.form("email") = " " then response.redirect("/error.asp?content=newuser&error=tommail")
'connection til databasen oprettes Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database.mdb"))
'kontrol om allerede eksisterende info som brugernavn og email udføres Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM [users] ORDER BY [brugernavn] DESC", Conn, 1, 3 Do until rs.EOF if request.form("username") = rs("brugernavn") then response.redirect("/error.asp?content=newuser&error=rsuser") if request.form("email") = rs("email") then response.redirect("/error.asp?content=newuser&error=rsmail") rs.MoveNext Loop
'form-kontrol udføres if request.form("kodeord") <> request.form("rekodeord") then response.redirect("/error.asp?content=newuser&error=equalpass") if request.form("email") <> request.form("reemail") then response.redirect("/error.asp?content=newuser&error=equalmail")
'tilføjelse af brugeren bekræftet, og tilføjes her Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open "SELECT * FROM [users]", Conn, 1, 3 rs.AddNew rs("registered") = Now() rs("IP") = Request.ServerVariables("REMOTE_ADDR") rs("brugernavn") = Server.HTMLEncode(LCase(request.form("username"))) rs("password") = Server.HTMLEncode(LCase(request.form("username"))) rs("email") = LCase(request.form("email")) rs("postnummer") = request.form("postnummer") rs("nyhedsbrev") = request.form("nyhedsbrev") rs.Update response.redirect("/default.asp?content=newuser") %>
for each match in matches myMatchString = myMatchString + match Next
if len(myMatchString) = len(myString) then verifyName = true Else verifyName = false End If
Set RegularExpressionObject = nothing
End Function
Prøv f.eks
Response.Write verifyName("Hejsa")
og derefter
Response.Write verifyName("*/(Hejsa")
Mvh,
/thomas regin.
Synes godt om
Slettet bruger
08. maj 2003 - 12:37#4
tak for hjælpen, eagleeye.. 200 points lige i face :)
Synes godt om
Slettet bruger
08. maj 2003 - 12:39#5
men hvad med mellemrum? er det noget jeg kan tilføje i: "abcdefghijklmnopqrstuvxyzæøå01234567890 " ? for det mellemrum der er til sidst, fungerer ikke...
Selvom du afviste mit svar, så synes jeg du skal prøve at læse lidt om Regular Expressions, da det er noget af det mest kraftfulde inden for string-validering nogensinde, og giver dig mulighed for at designe skabeloner for hvordan dine brugernavne skal se ud etc. etc...
Mvh,
/thomas regin.
Synes godt om
Slettet bruger
08. maj 2003 - 13:16#8
hmm, jeg accepterer de scripts der er lettest at bruge for mig.. jeg startede med at forsøge med dit, fordi det så mere avanceret ud, men da jeg løb ind i første problem, så ville jeg også lige prøve det andet.. da det andet fungerede med det samme, så behøvede jeg ikke at gøre mere ud af dette. http://www.balladefis.dk/ siden er enkel, og man får adgang til vores downloads, etc. hvis man logger ind. Så siden sikkerheden ikke har brug for at blive sat længere op, så ser det ikke som en nødvendighed at knokle med kraftfulde scripts endnu :)
men mange tak for din hjælp. Har gemt dit script så jeg kan tage det op den dag det bliver nødvendigt :)
For at få samme effekt ud af det, som Eagle's skal du blot benytte:
str = "mitnyebrugernavn" if verifyName(str) then Response.write "Dit nye brugernavn er ok." else Response.write "Du har angivet ulovlige tegn" end if
Men Eagles fungerer også helt perfekt, og du skal naturligvis også godtage det, som virker for dig! Det var bare et godt råd, at prøve dig frem med RegEx, hvis du på et senere tidspunkt skal validere strings igen! :)
Mvh,
/thomas regin.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.