par
AB » 31 mai 2012, 17:32
En même temps si c'est juste pour valider un mail tu peux utiliser
filter_var
if(filter_var($email, FILTER_VALIDATE_EMAIL))
J'y avais pensé à cela mais cette méthode ne valide pas forcement qu'un mail, admin@localhost est validé par exemple.
Sans doute parce que c'est une syntaxe valide...
Par contre j'avais testé un script qui validait au moins la présence mais surtout l’existence d'un nom de domaine, je rechercherais si qq'un le veux.
c'est checkdnsrr (qui ne fonctionne sous window qu'à partir de php 5.3)
Et donc au total le maximum "raisonnable" que l'on puisse faire pour valider un mail est :
function Valid_mail ($mail)
{
$domaine = explode('@',$mail);
return (filter_var($mail, FILTER_VALIDATE_EMAIL) !== false && isset($domaine[1]) && checkdnsrr($domaine[1]) === true)? true : false;
}
$mail = "[email protected]";
if (Valid_mail($mail)) echo 'mail_valid'; else echo 'mail_non_valide';
Tu as tout intérêt à utiliser une fonction native php (filter_var) pour valider un mail standard. La syntaxe des mail peut évoluer (rien n'est figé dans le marbre) et en utilisant une fonction php au moins tu auras l'avantage que les nouvelles versions php de validation prendront en compte les évolutions.
Sinon il faudrait te tenir toi-même au courant des éventuelles évolutions de la syntaxe des mails, pour ensuite aller changer ton regex de validation dans ton code... vas-tu y penser ?
[quote="Akirami"][quote="AB"]En même temps si c'est juste pour valider un mail tu peux utiliser [url=http://www.php.net/manual/fr/filter.filters.validate.php]filter_var[/url]
[php]if(filter_var($email, FILTER_VALIDATE_EMAIL))[/php][/quote]
J'y avais pensé à cela mais cette méthode ne valide pas forcement qu'un mail, admin@localhost est validé par exemple.
[/quote]
Sans doute parce que c'est une syntaxe valide...
[quote="Akirami"]
Par contre j'avais testé un script qui validait au moins la présence mais surtout l’existence d'un nom de domaine, je rechercherais si qq'un le veux.[/quote]
c'est checkdnsrr (qui ne fonctionne sous window qu'à partir de php 5.3)
Et donc au total le maximum "raisonnable" que l'on puisse faire pour valider un mail est :
[php]function Valid_mail ($mail)
{
$domaine = explode('@',$mail);
return (filter_var($mail, FILTER_VALIDATE_EMAIL) !== false && isset($domaine[1]) && checkdnsrr($domaine[1]) === true)? true : false;
}
$mail = "
[email protected]";
if (Valid_mail($mail)) echo 'mail_valid'; else echo 'mail_non_valide';[/php]
Tu as tout intérêt à utiliser une fonction native php (filter_var) pour valider un mail standard. La syntaxe des mail peut évoluer (rien n'est figé dans le marbre) et en utilisant une fonction php au moins tu auras l'avantage que les nouvelles versions php de validation prendront en compte les évolutions.
Sinon il faudrait te tenir toi-même au courant des éventuelles évolutions de la syntaxe des mails, pour ensuite aller changer ton regex de validation dans ton code... vas-tu y penser ?