Ik gebruik het volgende script hier van het forum:

https://www.phphulp.nl/php/script/snippets/email-validatie-snippet/1646/emailvalidatiesnippet/1194/

Dat leek goed te werken.
Maar als ik bijv. ingeef (via testprogrammaatje) hans_knight@@hotmail.com dan
komt er in de echo:

Result custom checkmail:
valid

Result filter_var:
invalid

Result forced preg_match:
invalid

Bij andere verkeerde ingave staat er 3 x invalid.
Nu was mijn vraag of het script wel klopt. Of moet ik zelf de 3 resultaten verwerken?
Ik vang het resultaat als volgt af:

$ma = checkmail($email_address);
if (!$ma === TRUE){
return 'fout emailadres';
}
Een mailadres heeft geen twee @'jes. Dus de filter_var is uiteraard invalid.
Ja, dat snap ik...
Maar moet ik dan alle drie de resultaten afvangen?
Of staat er in het script ergens dat het totaal een negatief resultaat geeft?
Zo te zien is het een testscriptje. De functie checkmail() geeft een boolean (true/false) terug als de formatering van het mailadres niet klopt en als er geen MX-server aanwezig is.
Volgens mij heb ik PHP 5.5.
Maar lijkt erop of hij de eerste vergelijking pakt (PHP5.3).
Want dan zou het wel kloppen.
Dan checkt hij alleen met de preg_match.
Dan maakt het niet uit of een toegestaan '@' meerdere keren wordt gebruikt.
Ik test het nog wel eens vandaag.
Wordt vervolgd..


Toevoeging op 11/03/2016 11:21:35:

Bedankt voor je reacties!
Ik laat nu het aantal '@' tellen.
En het lijkt te werken nu.

  $tel = substr_count ( $email, '@' );


En verderop


if ($tel === 1)
{ 
          return $valid;
     }
}            
     /* No valid email --> no correct host name or no MX records found*/
     return $tel;
}


Reageren