Avatar billede jjdk Nybegynder
16. august 2006 - 16:20 Der er 27 kommentarer og
1 løsning

Tjek indtastet email adresse

Nedenstående funktion, tjekker forskellige valideringer af email-adressen. Men den "fanger" ikke, hvis der skrives en email med mellemrums-tegn (space).
En der kan hjælpe med denne tilføjelse.


function check_email($email) {
if(empty($email)) return TRUE;
if((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return TRUE;
if(checkdnsrr($host[1].'.', 'A') ) return TRUE;
if(checkdnsrr($host[1].'.', 'CNAME') ) return TRUE;
}
return FALSE;
}
Avatar billede iss Novice
16. august 2006 - 16:26 #1
Kig i manualen under preg_match, der står en kommentar omkring det.

Plus der må ikke være en CNAME record bruges ikke til post, der bruges udveksleren på MX og hvis ingen MX findes bruges A recorden.
Avatar billede boost Nybegynder
16. august 2006 - 16:36 #2
if(preg_match("/\b[A-Z0-9._%+-]+@[A-Z0-9._%-]+\.[A-Z0-9._%-]{2,4}\b/i", $email)) {
    echo 'Du har indtastet en ugyldig mail-adresse.';
}
Avatar billede jjdk Nybegynder
16. august 2006 - 16:37 #3
Det sidste du skriver: Plus der........
forstår jeg ikke en meter af. Jeg er næste novice på PHP.
Avatar billede jjdk Nybegynder
16. august 2006 - 16:39 #4
Til futurebb: Skal jeg erstatte den eksisterende "if(preg_match......." med det du foreslår eller er det en tilføjelse.
Avatar billede boost Nybegynder
16. august 2006 - 16:41 #5
Det er i stedet for din kode..
Avatar billede iss Novice
16. august 2006 - 16:42 #6
Det har intet med PHP at gøre, det er hvordan DNS og post hører sammen...
Avatar billede jjdk Nybegynder
16. august 2006 - 16:43 #7
Jeg kan se, at din er noget anderledes. Er det noget du har afprøvet / har erfaringer med. Jeg kan ikke gennemskue forskellen.
Avatar billede iss Novice
16. august 2006 - 16:49 #8
futurebb, er info@denmarks.national.museum ikke en valid email?
Avatar billede jjdk Nybegynder
16. august 2006 - 16:50 #9
Til jss: Kan du forklare, hvad jeg skal tjekke/gøre. Vi har systemet kørende på en Unix-server hos www.web10.dk
Avatar billede iss Novice
16. august 2006 - 16:51 #10
jss? Mener du mig?
Avatar billede jjdk Nybegynder
16. august 2006 - 16:52 #11
Sorry - ja det er iss?
Avatar billede iss Novice
16. august 2006 - 17:00 #12
Du må ikke tage CNAME med...
Avatar billede jjdk Nybegynder
16. august 2006 - 17:03 #13
Vil det sige, at jeg skal fjerne linje:
if(checkdnsrr($host[1].'.', 'CNAME') ) return TRUE;
Avatar billede iss Novice
16. august 2006 - 17:11 #14
Lavet ud fra din og WK Group's (fra manualen)
function check_email($email){
    return count($email = explode('@', $email, 3)) == 2
        && strlen($email[0]) < 65
        && strlen($email[1]) < 256
        && preg_match("#^[$x]+(\.?([$x]+\.)*[$x]+)?$#", $email[0])
        && preg_match('#^(([a-z0-9]+-*)?[a-z0-9]+\.)+[a-z]{2,6}.?$#', $email[1])
        && (checkdnsrr($email[1], 'MX') || checkdnsrr($email[1], 'A'));
}

Den kan du lige teste og se om den opfylder hvad du mene den skal... har dog ikke lige testet den...
Avatar billede boost Nybegynder
16. august 2006 - 17:11 #15
Sorry, min fejl..
Avatar billede iss Novice
16. august 2006 - 17:27 #16
$emails = array(
"email@email.com",
"email2@email.xxx",
.... osv
"bla@bla.bla"
);

function check_email($email){
    $x = '\d\w!\#\$%&\'*+\-/=?\^_`{|}~';
    return count($email = explode('@', $email, 3)) == 2
        && strlen($email[0]) < 65
        && strlen($email[1]) < 256
        && preg_match("#^[$x]+(\.?([$x]+\.)*[$x]+)?$#", $email[0])
        && preg_match('#^(([a-z0-9]+-*)?[a-z0-9]+\.)+[a-z]{2,6}.?$#', $email[1])
        && (checkdnsrr($email[1], 'MX') || checkdnsrr($email[1], 'A'));
}

foreach ($emails as $email) {
    echo "<br>".$email.": ".(check_email($email)?"Valid":"Invalid");
}

Så skal du bare rette arrayet til de emails du vil teste for...
Avatar billede iss Novice
16. august 2006 - 17:34 #17
http://molberg.eu/testemails.php eller brug den der...
Avatar billede jjdk Nybegynder
16. august 2006 - 18:18 #18
Jeg er nødt til lige og spørge:
Emailfunktionen bruger jeg i flere programmer, og ved mit tjek, har jeg en if-sætning. Jeg kan ikke lige gennemskue, hvordan jeg får det tilpasset dit kode.
Vil du hjælpe mig med det? Tjek-koden ser sådan her ud:

if($email) {
        if(check_email($email) === FALSE) {
    $error = "$error Emailadressen er indtastet forkert!";
        }
}
Avatar billede jjdk Nybegynder
16. august 2006 - 18:22 #19
http://molberg.eu/testemails.php er afprøvet og fanger alle fejl, jeg har prøvet at lave.
Avatar billede jjdk Nybegynder
16. august 2006 - 18:27 #20
Hvis jeg skriver 2 valide adresser i boksen på http://molberg.eu/testemails.php  eller samme email 2 gange, så skriver den at den øverste er "invalid". Der må være noget galt med koden!!
Avatar billede jjdk Nybegynder
16. august 2006 - 19:38 #21
Jeg har fået det til at virke - det var bare at komme i gang.
Tak for hjælpen.
Avatar billede iss Novice
16. august 2006 - 19:41 #22
Der er ikke noget galt med koden, der er noget galt med din browser... det er der nu taget højde for...

Og du kan bare erstatte med den funktion, der skal intet laves om.
Avatar billede boost Nybegynder
16. august 2006 - 19:45 #23
Var det ikke iss der skulle have pointsne?
Avatar billede iss Novice
16. august 2006 - 19:49 #24
Samler ikke...
Avatar billede jjdk Nybegynder
16. august 2006 - 19:52 #25
UNDSKYLD iss. Du skal i hvert fald have tak for hjælpen, for det var dine kommentarer, der løste mit spørgsmål.
Avatar billede iss Novice
16. august 2006 - 19:58 #26
Velbekommen, dog siger den nye udgave ikke at en tom email er ok, hvis du vil have det skal du lige sætte den linie på også (kan dog ikke se hvorfor en tom streng skal være valid email)
Avatar billede jjdk Nybegynder
16. august 2006 - 20:25 #27
Jeg tjekker på anden vis om feltet er udfyldt - så det hele er så fint nu.
Tak endnu engang.
Avatar billede iss Novice
16. august 2006 - 20:30 #28
Og tak for karma:D
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