14. juli 2005 - 14:31Der 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)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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.)
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.