Avatar billede plato Juniormester
22. januar 2007 - 12:59 Der er 8 kommentarer og
1 løsning

Tjek for ugyldige tegn i brugeroprettelse

Hejsa Ng.

Som det er nu tjekker jeg kun, når en bruger opretter sig, efter om bruger har indtastet et brugernavn på min. 4 karakter.

Smider lige koden, håber det er nok med dette:
If Len(strUser) < 4 THEN strErr = strErr & "0,"
If Len(strPass) < 4 THEN strErr = strErr & "2,"
If IsEmpty(strMail) THEN strErr = strErr & "4,"
If CheckEMail(strMail) = False THEN strErr = strErr & "5,"
If CStr(strPass) <> CStr(strCPass) THEN strErr = strErr & "3,"

Nu har jeg jo så opdaget, desværre for sent, at jeg heller ikke ønsker at brugeren må oprette brugernavne med mellemrum og underlige tegn.

Nogen der kan hjælpe mig med dette?

Min If CheckEmail ligger i en include fil der hedder textfunctions.asp og koden deri ser sådan ud:

Function CheckEmail(strmail)
    Dim regXp, retVal
    Set RegXp = New RegExp
    RegXp.Pattern = "(^([a-zA-Z0-9.-_]+[a-zA-Z0-9]|\a-zA-Z0-9])@{1}[a-zA-Z0-9.]+\.[a-zA-Z]{2,4}$)"
    RegXp.IgnoreCase = False
    retVal = RegXp.Test(strmail)

    If retVal = True THEN
          CheckEmail = True
    Else
          CheckEmail = False
    End If

Set RegXp = Nothing
End Function

Det kunne jo være en udvidelse af brugernavn-tjek kunne laves i samme include fil.
Avatar billede madeindk Nybegynder
22. januar 2007 - 17:04 #1
Jeg har denne her, den fungerer ret godt :-)

<%
Function ControlInput(strInput)
 
  validChar = "abcdefghijlkmnopqrstuz01234567890"

  For i = 1 to len(strInput)
   
    If inStr(1, validChar, Mid(strInput,i,1)) = 0 then
      ControlInput = False
      Exit Function
    End If
 
  Next
 
  ControlInput = true

End Function
%>

Og så bare kalde den: <%= ControlInput("bombom") %>
Avatar billede plato Juniormester
23. januar 2007 - 01:16 #2
Mystisk jeg har sat det hele ind, men det giver fejl uanset hvad jeg gør i bruger-oprettelse.

<%
Function CheckUser(strUser)
 
  validChar = "abcdefghijlkmnopqrstuz01234567890"

  For i = 1 to len(strUser)
   
    If inStr(1, validChar, Mid(strUser,i,1)) = 0 then
      CheckUser = False
      Exit Function
    End If
 
  Next
 
  CheckUser = true

End Function

strAction = Request.QueryString("action")

Select Case strAction
Case "newuser" ' Creating a new user
strUser = Trim(Request.Form("user"))
strPass = Trim(Request.Form("pass"))
strCPass = Trim(Request.Form("CPass"))
strMail = Trim(Request.Form("mail"))
strACode = CreateCode(20)



    If CheckUser(strUser) = False THEN strErr = strErr & "0,"
    If Len(strPass) < 4 THEN strErr = strErr & "2,"
    If IsEmpty(strMail) THEN strErr = strErr & "4,"
    If CheckEMail(strMail) = False THEN strErr = strErr & "5,"
    If CStr(strPass) <> CStr(strCPass) THEN strErr = strErr & "3,"

    If IsEmpty(strErr) THEN
("Opretter profilen.")
Avatar billede madeindk Nybegynder
23. januar 2007 - 14:21 #3
Dette fungerer skam glimrende:

<%
Function CheckUser(strUser)
 
  validChar = "abcdefghijlkmnopqrstuz01234567890"

  For i = 1 to len(strUser)
   
    If inStr(1, validChar, Mid(strUser,i,1)) = 0 then
      CheckUser = False
      Exit Function
    End If
 
  Next
 
  CheckUser = true

End Function

strAction = Request.QueryString("action")

Select Case strAction

Case "newuser" ' Creating a new user
strUser = "test"
strPass = "pass"
strCPass = "pass"
strMail = "mail"

If CheckUser(strUser) = False THEN strErr = strErr & "0,"
If Len(strPass) < 4 THEN strErr = strErr & "2,"
If IsEmpty(strMail) THEN strErr = strErr & "4,"
'If CheckEMail(strMail) = False THEN strErr = strErr & "5,"
If CStr(strPass) <> CStr(strCPass) THEN strErr = strErr & "3,"

If isEmpty(strErr) Then
  Response.Write("Der opstod ingen fejl")
Else
  Response.Write("Følgende fejl opstod:" & strErr & "")
End If

End Select
%>
Avatar billede plato Juniormester
23. januar 2007 - 19:59 #4
Oki, et eller andet sted ser jeg forkert. Prøver at oprette " ¤% g ¤#" - dette giver fejl. Prøver at oprette "PlatoPlato" dette giver også fejl.
Poster lige følgende:
textfunctions.asp (indeholder funktionerne)
storedata.asp (gemmer profilen)
opret.asp (oprettelses formen)


----------textfunctions:
Function CheckUser(strUser)
  validChar = "abcdefghijlkmnopqrstuz01234567890"
  For i = 1 to len(strUser)
    If inStr(1, validChar, Mid(strUser,i,1)) = 0 then
      CheckUser = False
      Exit Function
    End If
  Next
  CheckUser = True
End Function


----------storedata.asp:
strAction = Request.QueryString("action")
Select Case strAction
Case "newuser" ' Creating a new user
strUser = Trim(Request.Form("user"))
strPass = Trim(Request.Form("pass"))
strCPass = Trim(Request.Form("CPass"))
strMail = Trim(Request.Form("mail"))
antalbio = Trim(Request.Form("antalbio"))
antaldvd = Trim(Request.Form("antaldvd"))
anyheder = Trim(Request.Form("anyheder"))
strACode = CreateCode(20)
    If CheckUser(strUser) = False THEN strErr = strErr & "0,"
    If Len(strPass) < 4 THEN strErr = strErr & "2,"
    If IsEmpty(strMail) THEN strErr = strErr & "4,"
    If CheckEMail(strMail) = False THEN strErr = strErr & "5,"
    If CStr(strPass) <> CStr(strCPass) THEN strErr = strErr & "3,"

    If IsEmpty(strErr) THEN
        ------OPRET PROFIL------


----------opret.asp:
<form name="" method="post" action="storedata.asp?action=newuser">
Brugernavn:
<input type="text" name="user">&nbsp;<font color="red">(Min. 4 tegn)</font>
Password:
<input type="text" name="pass">&nbsp;<font color="red">(Min. 4 tegn)</font>
Bekr&aelig;ft password:
<inputtype="text" name="cpass">
E-Mail adresse:
<input type="text" name="mail">&nbsp;<font color="red">E-Mail adresse skal være gyldig
<Input type="submit" value="Opret"><br><font color="red"><%= strErr %></font>
</form>
Avatar billede plato Juniormester
23. januar 2007 - 20:00 #5
textfunctions er inkluderet i storedata.asp og opret.asp
Avatar billede madeindk Nybegynder
23. januar 2007 - 20:03 #6
Det er klart, den gør forskel på store og små bogstaver. Du skal indsætte LCase funktionen :-)

Trim(LCase(Request.Form("user")))
Avatar billede madeindk Nybegynder
23. januar 2007 - 20:04 #7
Eller erstatte denne linie: If inStr(1, validChar, Mid(strUser,i,1)) = 0 then med følgende: If inStr(1, validChar, Mid(LCase(strUser),i,1)) = 0 then - det burde også virke :-)
Avatar billede plato Juniormester
23. januar 2007 - 20:28 #8
Superlækkert.. En stor skam jeg aldrig har brugt den noget før.

Tusind tak. :) Husk at smide et svar.
Avatar billede madeindk Nybegynder
23. januar 2007 - 20:31 #9
Hehe. Det var godt du fik det til at virke.

Svar ;-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester