par

Comment puis-je vérifier qu'une adresse mail est correctement formatée en PHP ?

2 Réponses

+1 validé
par

Il existe plusieurs méthodes pour vérifier le format d'une adresse mail.

Vous pouvez tout d'abord utiliser les expressions régulières (REGEX) pour valider et vérifier la bonne forme d'une adresse e mail.

Remarque : Cela ne permet pas de vérifier que l'adresse existe, mais seulement de vérifier qu'elle se compose d'une chaine de caractères correcte.

function check_email_address($email) { 
    return (!preg_match( "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$^", $email)) ? false : true; 
} 

Voici comment utiliser cette fonction :

$email = "test@test.com";
if (check_email_address($email) == false){echo "incorrect";}
else echo "correct";

Vous pouvez également utiliser une fonction native proposée par PHP.

Il s'agit de la fonction filter_var() qui filtre une variable avec un filtre spécifique. Le filtre qui doit être utilisé pour vérifier une adresse mail est FILTER_VALIDATE_EMAIL.

$email = "test@test.com";

if (filter_var($email, FILTER_VALIDATE_EMAIL)) 
{
echo "correct";
}
else
{
echo "incorrect";
}

Remarque : Le filtre FILTER_VALIDATE_EMAIL valide l'adresse e-mail selon la syntaxe défini par la RFC 822, à l'exception des commentaires et du remplissage par des espaces qui ne sont pas supportés, ce qui peut permettre de by-pass cette fonction. Préférez donc une solution du type REGEX à filter_var().

+1 validé
par

Vous pouvez également contrôler le format d'une adresse mail, coté client.

L'attribut PATTERN d'un INPUT d'un formulaire en HTML5 peut être utilisé pour vérifier la bonne forme d'une adresse mail. Pour ce faire on utilise une expression régulière, une REGEX.

Voici le PATTERN correspondant :

pattern="^(([-\w\d]+)(\.[-\w\d]+)*@([-\w\d]+)(\.[-\w\d]+)*(\.([a-zA-Z]{2,5}|[\d]{1,3})){1,2})$"

Exemple (si vous saisissez autre chose que les caractères autorisés par la REGEX votre navigateur retourne une erreur) :

<form id="monFormulaire" method='post' action='#' role="form">
<input name="mail" id="mail"  value="" 
	required="required" aria-required="true" 
	pattern="^(([-\w\d]+)(\.[-\w\d]+)*@([-\w\d]+)(\.[-\w\d]+)*(\.([a-zA-Z]{2,5}|[\d]{1,3})){1,2})$"
	title="Votre adresse mail"
	type="text" spellcheck="false" style="width:50%;" />
<input type="submit" value="Envoyer" />
</form>

Remarque : Avec cette REGEX la vérification de l'adresse mail s’effectue coté client mais pour des raisons de sécurité vous devez également effectuer le contrôle coté serveur., en PHP.

Lecture Recommandée

Edward Snowden - Mémoires vives

"Je m'appelle Edward Joseph Snowden. Avant, je travaillais pour le gouvernement mais aujourd'hui je suis au service de tous. Il m'a fallu près de trente ans pour saisir la différence et quand j'ai compris, ça m'a valu quelques ennuis au bureau."

L'homme qui a tout risqué pour dénoncer la surveillance globale, ou l'extraordinaire histoire d'un garçon brillant qui a grandi "en ligne", d'un homme devenu espion, puis lanceur d'alerte, et, en exil, la consciencce de l'internet.

Mémoires vives est un témoignage exceptionnel, également disponible en numérique.

Sujets Connexes

Offre Sponsorisée

Ailleurs sur le Web

Merci pour votre visite sur 1FORMATIK.com

Un petit clic sur la pub est toujours apprécié, c'est elle qui finance le site

Bon surf

...