Avatar billede danino Nybegynder
23. januar 2004 - 13:04 Der 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...
Avatar billede danino Nybegynder
23. januar 2004 - 13:06 #1
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."
Avatar billede schaefner Juniormester
23. januar 2004 - 13:08 #2
Du er sikker på at dit felt ikke hedder $_GET["email"]; ?
Avatar billede schaefner Juniormester
23. januar 2004 - 13:12 #3
<?php
if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i",$_GET['mail'])) {
    $name = $_GET['name'];
    $content = $name."\r\n".$_GET['message'];
    $header = "From: $name <$email>\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.';
}
?>
Avatar billede schaefner Juniormester
23. januar 2004 - 13:13 #4
Og du er sikket på at dine informationer bliver sendt via adressen?
Avatar billede detox Nybegynder
23. januar 2004 - 13:16 #5
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:

if(eregi("^[0-9a-z_]([-_\.+]?[0-9a-z])*@[0-9a-z][-.0-9a-z]*\\.[a-z]{2,3}[.]?$", $email))
Avatar billede danino Nybegynder
23. januar 2004 - 13:17 #6
Ja, det er jeg sikker på schaefner, og koden i din kommentar fik det til at virke! Mange tak... Smid et svar :)
Avatar billede schaefner Juniormester
23. januar 2004 - 13:18 #7
svar :)
Avatar billede detox Nybegynder
23. januar 2004 - 13:31 #8
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).
Avatar billede danino Nybegynder
23. januar 2004 - 15:50 #9
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?
Avatar billede 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 ?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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