23. januar 2004 - 13:04Der er
9 kommentarer og 1 løsning
Validering af email
Jeg har fundet denne kode, til validering af email, her på eksperten.dk: $email = $_GET["mail"]; if(eregi("^[0-9a-z_]([-_.]?[0-9a-z])*@[0-9a-z][-.0-9a-z]*\\.[a-z]{2,3}[.]?$", $email)) { $name = $_GET["name"]; $content = $name . "\r\n" . $_GET["message"]; $header = "From: " . $name . "<" . $email . ">\r\n"; $header .= "Reply-To: " . $email; if(mail("xxx@xxx.xxx", "Subject", $content, $header)) { echo "Din mail er blevet sendt!"; } else { echo "Der er sket en fejl."; } } Men jeg ender hele tiden med: "Der er sket en fejl", selv om jeg er 100% sikker på at det er en normal emailadresse der indtastes på siden før. Er der noget galt med den "regular expression"? Jeg fatter nemlig ikke selv noget af dem...
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Det er forresten ikke helt rigtigt det jeg skrev der :-) Min kode er: $email = $_GET["mail"]; if(eregi("^[0-9a-z_]([-_.]?[0-9a-z])*@[0-9a-z][-.0-9a-z]*\\.[a-z]{2,3}[.]?$", $email)) { $name = $_GET["name"]; $content = $name . "\r\n" . $_GET["message"]; $header = "From: " . $name . "<" . $email . ">\r\n"; $header .= "Reply-To: " . $email; if(mail("xxx@xxx.xxx", "Subject", $content, $header)) { echo "Din mail er blevet sendt!"; } else { echo "Der er sket en fejl."; } } else { echo "Din mail er ikke blevet sendt."; } Og jeg ender med: "Din mail er ikke blevet sendt."
if (mail("xxx@xxx.xxx","Subject",$content,$header)) { echo 'Din mail er blevet sendt!'; } else { echo 'Der er sket en fejl.'; } } else { echo 'Din mail er ikke blevet sendt.'; } ?>
Din regexp mangler hvert fald en \ foran punktummet og hvis du osse vil have '+' med (som vidst osse er et lovligt tegn i navnet, skal den se sådan ud:
Den er ikke helt korrekt. Når du har: !preg_match. ! betyder NOT, så den matcher kun ikke korrekte adresser. Og den giver ikke plads til + i navnet. Desuden tjekker den ikke længden af ext (som skal være 2 eller 3 tegn).
Ok... Men jeg har fjernet !-tegnet. Men hvis man skal have + med, samt tjekke for længden af ext, skal jeg så bruge den, som du skrev kl 13:16:32?
Synes godt om
Slettet bruger
23. januar 2004 - 22:39#10
Detox: Det er rart at se andre kæmpe for + i adressetjekkere ;-)
Sidste led i domænenavnet kan da godt vær 4 tegn nu? Hvad med servernavn.info ?
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.