03. juli 2005 - 13:13Der er
20 kommentarer og 1 løsning
Php kode til at validere form-emailfelt for korrekt syntaks
Hej Boys.
Er der nogen af jeg der har en stump phpkode der kan validere et formularfelts indhold for om det er korrekt syntaks hvis det skal være en email adresse?
if (preg_match("/" . $pattern . "/i", $suspectEmail)) echo "Det ligner en emial adresse"; else echo "Det er ikke knogen email adresse."
Synes godt om
Slettet bruger
03. juli 2005 - 13:36#5
Den virker ikke korrekt.
Der er mange, der forsøger at lave email-valideringer, og de fleste gør det forkert, så de giver for mange negative - altså nægter at godkende adresser, som rent faktisk er gyldige. Min personlige kæphest er tegnet +, som er i mange af de adresser, jeg benytter, og som mange emailadressecheckere ikke godkender.
Synes godt om
Slettet bruger
03. juli 2005 - 13:38#6
Og min kommentar gælder både for linket og de løsninger, der er postet her.
Men det er stadig ikke nok. Bare fordi dit miljø måske ikke har et tegn, som en del af \w (For engelsk er \w = [a-zA-Z0-9_] ) så kan det godt lade sig gøre at have brugernavne, som indeholder det tegn.
Synes godt om
Slettet bruger
03. juli 2005 - 14:15#12
Nej, og så glemte du nogle af de mest benyttede TLD: com, net, edu, gov og mil
Min pointe er: lad være med at tjekke syntaks. Se om der er et @ med noget før og noget efter, og send en mail med en valideringskode. Eventuelt brug DNS først for at se om domænet er gyldigt.
For ikke at gøre noget forkert kan man reducere problemet til:
et @-tegn til venstre 1->flere ikke-@-tegn til højre 4->flere ikke-@-tegn, heraf mindst et punktum
Man kan jo alligevel ikke afgøre om en emailadresse du'r bare ved at kigge på den. Skal den eksistere, så tjekker man det ved at sende en mail til den. Et tjek som anført her skal blot fange oplagte tastefejl.
1) \w er ikke miljøbestemt. Den står for den samme sekvens overalt i verdenen. Iøvrigt skrev jeg faktisk at du jo kunne tilføje de tegn som du mente manglede.
Jo, der var en smutter, men den skulle faktisk have set sådan her ud:
sandbox> Jo, jeg glemte com, gov, net og org. Men rent faktisk var mit argument at man burde undgå denne version at tjekket fordi at det pt. kommer nye TLD'er til.
A "word" character is any letter or digit or the underscore character, that is, any character which can be part of a Perl "word". The definition of letters and digits is controlled by PCRE's character tables, and may vary if locale-specific matching is taking place (see "Locale support" above). For example, in the "fr" (French) locale, some character codes greater than 128 are used for accented letters, and these are matched by \w.
Så hvis LC_ALL er sat til da_DK, så vil æøåÆØÅ være med i \w. (Måske også nogle af éÉöÖäÄüÜ)
Ja, man lærer da heldigvis noget nyt hver dag. Undskylder ydmygest sandbox.
Hvad hulen tænker PHP folkene dog på? Det er sgu da sindsygt at \w skulle ændre betydning med landet. Det kan da give anledning til alle mulige bizarre fejl når scripts kopieres rundt mellem brugere på 'nettet.
Det betyder imidlertid at man faktisk ikke må bruge \w, men i stedet skal bruge ”a-zA-Z0-9_”. Til trods for at æ, ø og å er tilladt i domænenavne, er de nemlig ikke tilladt (end´nu da) i email adresser.
"nemlig ikke tilladt (end´nu da) i email adresser." - jo da. Jeg har lige sendt mig selv en email på adresser "blær@erik.....ogsånogetmere". De er formelt også tilladt i domænenavne der bruges til email, men ikke alle klienter forstår det endnu.
Der et *intet* ved programmering som skræmmer mig - altså andet end lige udviklerne, altså. ;^)
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.