FONCTION DE VERIFICATION DE LA SYNTAXE ET DE LA VALIDITÉ D'UNE ADRESSE EMAIL
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008
-
30 avril 2008 à 10:04
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 2009
-
1 mai 2008 à 00:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Il est possible de vérifier tout un tas d'autres choses et de créer ses propres filtres...
référence : http://www.php.net/filter
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 30 avril 2008 à 18:57
Hello,
en plus du reste, ça n'a rien à faire ici : mets le plutôt sur codyx.org (et cherche d'abord si ça n'existe pas déjà).
Merci.
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 30 avril 2008 à 14:29
1/ Le stripslashes() ne devrait pas se faire à l'intérieur de la fonction mais à l'extérieur. Moi je désactive mes magic_quotes sur mon serveur donc je n'ai pas besoin de ralentir l'exécution du script avec un test de la config des magic_quotes.
2/ eregi() est dépréciée et obsolète ! Utilise une fonction d'expression régulière PCRE. Dans le cas du test d'un motif d'adresse e-mail, c'est preg_match() qui fera l'affaire.
3/ Pour récupérer le domaine tu peux simplement faire un explode() sur le séparateur @
4/ Tes fonctions MYSQL n'ont rien à faire dans la fonction. Ta fonction doit juste tester si le format du paramètre est bien celui attendu. Rien de plus.
5/ Tes erreurs devraient être gérée à l'extérieur de la fonction. En renvoyant un booléen ou un entier tu peux tester à l'extérieur la valeur de retour et appliquer le bon message d'erreur (au format que tu veux d'ailleurs : html, xhtml, xml, texte bruit...)
++
amezghal
Messages postés385Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention21 août 20155 30 avril 2008 à 13:49
et pour windows ?
checkdnsrr n'est pas disponible dans cet OS
cs_yoman64
Messages postés592Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 4 décembre 2008 30 avril 2008 à 10:04
Salut,
Ta regex bloque BEAUCOUP de cas d'email totalement valides... Et je crois que l'intérêt d'une telle fonction serait de retourner un boolean...
Ici tu nous force à utiliser mysql, et si moi je l'utilise pas ?
J'ai refait ta fonction (sans refaire la regex, j'avais la flemme de me lire la rfc). Je dis pas que c'est mieu la hein, je dis que c'est plus propre et que ça pourrait t'aider à apprendre :)
1 mai 2008 à 00:41
1 mai 2008 à 00:22
if (filter_var( 'mon@mail.fr', FILTER_VALIDATE_EMAIL))
echo 'email correct';
else
echo 'email incorrect';
Il est possible de vérifier tout un tas d'autres choses et de créer ses propres filtres...
référence : http://www.php.net/filter
30 avril 2008 à 18:57
en plus du reste, ça n'a rien à faire ici : mets le plutôt sur codyx.org (et cherche d'abord si ça n'existe pas déjà).
Merci.
30 avril 2008 à 14:29
2/ eregi() est dépréciée et obsolète ! Utilise une fonction d'expression régulière PCRE. Dans le cas du test d'un motif d'adresse e-mail, c'est preg_match() qui fera l'affaire.
3/ Pour récupérer le domaine tu peux simplement faire un explode() sur le séparateur @
4/ Tes fonctions MYSQL n'ont rien à faire dans la fonction. Ta fonction doit juste tester si le format du paramètre est bien celui attendu. Rien de plus.
5/ Tes erreurs devraient être gérée à l'extérieur de la fonction. En renvoyant un booléen ou un entier tu peux tester à l'extérieur la valeur de retour et appliquer le bon message d'erreur (au format que tu veux d'ailleurs : html, xhtml, xml, texte bruit...)
++
30 avril 2008 à 13:49
checkdnsrr n'est pas disponible dans cet OS
30 avril 2008 à 10:04
Ta regex bloque BEAUCOUP de cas d'email totalement valides... Et je crois que l'intérêt d'une telle fonction serait de retourner un boolean...
Ici tu nous force à utiliser mysql, et si moi je l'utilise pas ?
J'ai refait ta fonction (sans refaire la regex, j'avais la flemme de me lire la rfc). Je dis pas que c'est mieu la hein, je dis que c'est plus propre et que ça pourrait t'aider à apprendre :)
<?php
function Email_Test($email){if (get_magic_quotes_gpc() 1) $email stripslashes($email);
if (eregi ('^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$',$email)){
$domaine = substr($email,strpos($email,'@'));return (checkdnsrr($domaine, 'MX') True || checkdnsrr($domaine, 'A') True);
}
return false;
}
?>
@+ Et bon courage :)