Avatar billede learner Praktikant
14. juli 2005 - 14:31 Der er 3 kommentarer og
1 løsning

valider emailadresse afviser hvorfor?

Her er min funktion:

function validate_email($email_adress){ //tjekker om emailadressen er aktiv/ok
    $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
    $valid = 0;
    if (eregi($regexp, $email_adress)){
        list($username,$domaintld) = split("@",$email_adress);
        if (getmxrr($domaintld,$mxrecords)){
            $valid = 1; //email gyldig
        }
    } else {
      $valid = 0; //email IKKE gyldig
    }
    return $valid;
}

Hvordan kan det være at den afviser en gyldig emailadresse?
emailen var xxxx@whateversyyyville.dk
og xxxx er fire bogstaver
og yyy skal fjernes :o)
(det er en kundes email :o) så derfor skriver jeg det sådan :o)

Håber nogen kan forklare
Avatar billede myplacedk Nybegynder
14. juli 2005 - 21:27 #1
Du tjekker for to ting. Derfor skal du først ud af hvilken af de to, der fejler.'

Jeg indsætter en "echo":
  if (eregi($regexp, $email_adress)){
      echo "regex OK\n";

Jeg kan se at din regex ikke fejler, det må være den næste test, der fejler noget.

Jeg indsætter en echo igen:

        list($username,$domaintld) = split("@",$email_adress);
    echo "MX lookup på $domaintld\n";

Den udskriver det jeg forventer, så langt så godt.

Der er kun et sted tilbage, det kan gå galt: MX-lookup. Jeg prøver at lave opslaget manuelt, og kan se at domænet ganske rigtigt ikke har en MX-record. Din test fejler altså ikke noget, det er domænet der fejler. ;-)

whateversyyyville.dk uden y'er har en A-record, men ingen MX-record. Der kan i princippet ikke modtages mails på det domæne, og din test skal derfor fejle.

I praksis kan man dog ofte godt modtage mails alligevel, A-recorden (eller CNAME) bliver så blot brugt i stedet.
Avatar billede learner Praktikant
14. juli 2005 - 23:54 #2
Okay, det var nok det bedste og mest præcise svar jeg længe har fået....
Mange tak :o)

Ps har du os en løsning på problemet :o) :o)
Eller synes du funktionen er okay som den er?
Avatar billede myplacedk Nybegynder
15. juli 2005 - 08:30 #3
Løsning? Teknisk set virker funktionen jo. Email-adressen fungerer ikke. Om resultatet er acceptabelt kommer an på hvad det skal bruges til.

Skal det være fancy, kan du prøve at åbne forbindelse til mailserveren. Lykkes det, kan du angive afsender og modtager. Virker det ikke, plejer serveren at melde fejl der. Gør den ikke det, kan du afbryde.
Du kan selvfølgelig også sende emailen med det samme, nu forbindelsen er der. Så får du også tjekket for om serveren afviser pga. af spam-filter eller antivirus. Men det kræver så at du laver en SMTP-klient i dit PHP. (Ikke så svært hvis man benytter SMTP-pakken i PEAR.)
Avatar billede learner Praktikant
15. juli 2005 - 10:20 #4
Tak :o)
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