Avatar billede zombien Juniormester
24. januar 2007 - 09:38 Der er 11 kommentarer og
1 løsning

Specialtegn i et formfelt

Hejsa...

Ja nu har jeg kigget lidt rundt omkring her på eksperten, og har fundet nogle forskellige php-scripts... mit problem er bare, jeg programmere i asp...

jeg har forsøgt at lave sådan en dejlig flot split her

mailtegn = split(email, "$", "£", "#", "*", "^", "æ", "ø", "å", "%", "&", "/", "(", ")", "=", "!", "[", "]", "{", "}", ";", ":", "<", ">", "\", "?", "´", "`", "|")

if Ubound(mailtegn) <> "1" Then
reponse.write " * Den indtastede e-mail indeholder ulovlige tegn "

men ja, det kommer jo ikke som et chok at det ikke virker, så derfor vil jeg høre... om der nogle som kender en simpel asp-tegn kontrol...

den skal ikke være for ansvaret, da en noob som mig skal kunne danne forståelse for den :-D
Avatar billede madeindk Nybegynder
24. januar 2007 - 09:41 #1
Brug denne her funktion til at tjekke om mailen er valid :-)

<%
Function MailOK(Streng)
  Set regEx = New RegExp
  regEx.IgnoreCase = True
  regEx.Pattern = "^[a-z0-9\.\-\_]+\@[a-z0-9\.\-]+\.(dk|com|net|org|info|biz|name|us|" &_
  "ac|ag|as|at|be|cc|ch|uk|fm|gs|io|it|jp|li|lt|lv|ms|nu|pl|ro|se|sh|tc|tf|tm|to|vg|de|fr|no)$"
  MailOK = regEx.Test(Streng)
  Set regEx = Nothing
End Function
%>

Og for at bruge funktionen:

<%= MailOK("james@smith.org") %>
Avatar billede zombien Juniormester
24. januar 2007 - 09:56 #2
okay... ja den ser meget simpel ud, men forstår ikke så meget af den :-) så derfor kommer der da lige et spørgsmål mere

hvad sker der, hvis det ikke er en gyldig e-mail adresse???
for indtil videre, køre jeg alt min kontrol af de forskellige felter i if'er...  så ved ikke helt hvor den function evt. skal smides hen....

og hvis jeg skal have den til at hente en variabel, så hedder den vel bare mailok(email)...
Avatar billede fennec Nybegynder
24. januar 2007 - 09:56 #3
Jeg bruger denne i stedet:
function checkEmail(fEmail)
dim fMailRx
    Set fMailRx = New RegExp
    fMailRx.Global = True
    fMailRx.IgnoreCase = True
    fMailRx.Pattern = "^\w[\w\.\-\+]*@\w([\w\-]*\.)+\w{2}\w*$"
    checkEmail = fMailRx.test(fEmail&"")
    Set fMailRx = nothing
end function

Den tjekker dog ikke for om TopLevelDomænet eksistere, som madeinddk's gør (du mangler desuden "edu" på listen). Min tjekker bare at den skal ende på ".xx". Tilgængæld er min mere rigtig i forhold til det som kommer før @.
Avatar billede fennec Nybegynder
24. januar 2007 - 10:00 #4
Det er Regular Expression kode vi afvikler her. Det er nok det mest kraftfulde værktøj der nogen sinde er opfundet inden for programmering, hvorfor det er blevet implementeret i rigtig mange sprog. Det er dog svært at forstå for ikke "indvidet" :o)

Funktione returnere true/false, så det er bare at kalde:

if checkEmail(request.form("email")) then
  response.write "Email valid"
else
  response.write "Email forkert"
end if
Avatar billede zombien Juniormester
24. januar 2007 - 10:02 #5
okay.. så jeg skal bare lave 2 if'er for at fremkalde resultatet???

så derved kan jeg godt smidt Regular Expression koden op oven over hele mit if kontrol-system...
Avatar billede zombien Juniormester
24. januar 2007 - 10:05 #6
dog er jeg lidt blank, med det fremkaldelse der...

if checkEmail(request.form("email")) then
  response.write "Email valid"
else
  response.write "Email forkert"
end if

for mig at se, er der ikke nogen sortering om det er true/false...
jeg havde forstillet mig, det så sådan her ud

if checkEmail(email) = false then
response.write " * E-mail ikke gyldig! "

og ja, så skal den jo ikke skrive det helt store, hvis e-mailen er gyldig, andet end bare køre videre i kontrollen
Avatar billede madeindk Nybegynder
24. januar 2007 - 10:16 #7
If Not checkEmail(request.form("email")) Then
' Der opstod fejl
End If
Avatar billede fennec Nybegynder
24. januar 2007 - 10:27 #8
Skulle vi ikke samle madeindk og min's pattern til en, så vi får TopLevelDomæne tjek på:

fMailRx.Pattern = "^\w[\w\.\-\+]*@\w([\w\-]*\.)+(dk|com|net|org|info|biz|name|us|" &_
  "ac|ag|as|at|be|cc|ch|uk|fm|gs|io|it|jp|li|lt|lv|ms|nu|pl|ro|se|sh|tc|tf|tm|to|vg|de|fr|no|edu|eu)$"

Dette burde være den ultimative email tjekker, sålænge man opdatere TLD listen til at indeholde alle valide TLD'er (så lige at eu heller ikke var på listen)
Avatar billede madeindk Nybegynder
24. januar 2007 - 10:31 #9
Jo, det kunne være cool - nu er den rigtig god fennec :-)
Avatar billede fennec Nybegynder
24. januar 2007 - 10:32 #10
Har lige tjekket op på TDL'erne. Der er flere end man lige tror:
http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains

Nok en umulig opgave at vedligeholde den liste. Tror jeg bibeholder min gamle kode :o)
Avatar billede madeindk Nybegynder
24. januar 2007 - 10:33 #11
Ja okaaaay, der er ret mange :o) Man burde lavet noget så den selv opdateret det, men det er nok lidt en svær opgave.
Avatar billede madeindk Nybegynder
27. januar 2007 - 17:53 #12
Tid til at lukke? Her er mit 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