Verifier un champs EMAIL

[Résolu/Fermé]
Signaler
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
-
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
-
Bonjour,
Je voudrais tester en plus de mon code ci dessous le champs email pour vérifier que l'email rentrer et bien un email

<?php

$message = '';

function show_post($name) {
if(isset($_POST[$name])) {
echo addslashes(htmlspecialchars($_POST[$name]));
}
}

function show_radio($name, $value, $default=false) {
if(isset($_POST[$name])) {
if($_POST[$name] == $value) {
echo ' checked="checked"';
}
echo 5;
} elseif($default == true) {
echo ' checked="checked"';
}
}

if(isset($_POST['envoyer'])) {
$error = false;
foreach(array('nom', 'prenom', 'addresse', 'ville', 'tel', 'mail', 'horaire', 'event') as $name) {
if(!isset($_POST[$name]) OR $_POST[$name] == '') {
$error = true;
}
}

if($error == true) {
$message = '<div style="text-align: center;"><h3 style="color: red;">Vous n\'avez pas remplie les champs obligatoire, veuillez les remplirs avant d\'envoyer...</h3></div>';
} else {
include('mail.php');
exit();
}
}

Merci de vos réponse :)

5 réponses

Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
77
Salut !

Alors ya plusieurs méthodes pour vérifier un email, mais la plus simple je pense est d'utiliser une expression régulière. L'avantage c'est que c'est assez simple, mais l'inconvéviant est que ca va te vérifier la forme, donc si c'est bien un truc du style toto@monsite.fr, cela ne va pas te vérifier si l'adresse est réelle ou non.
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
272
Je prend celle la, ce n'est pas un soucie car ces un site privée et les client non aucun intérêt à marquer ce genre d'adresse (toto@monsite.fr)..

Comment la mettre en place dans mon code au dessus ? :)
Messages postés
1226
Date d'inscription
lundi 28 mars 2011
Statut
Membre
Dernière intervention
2 septembre 2013
77
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
272
Merci, mais je l'inserer ou ce code ? J'y connai rien en developpement...
Il existe aussi une méthode HTML5 bien sympathique :

<input type="email" name="user_email">

ou avec une expression régulière

<input type="email" pattern="[^ @]*@[^ @]*" value="">
Messages postés
2823
Date d'inscription
lundi 20 juillet 2009
Statut
Contributeur
Dernière intervention
23 janvier 2020
812
Bonsoir,
le problème avec le HTML 5 c'est que si l'utilisateur n'a pas fait de mise à jours de son navigateur, il pourra rentré n'importe quoi.
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
824
Oui ou s'il sait bidouiller le Js
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
824
Si jamais tu venais à utiliser la méthode "expression régulière" alors utilise plutôt celle-ci :

[a-z0-9!#$%&'*+/=?^_'{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_'{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?


C'est la regex la plus recommandée par la norme RFC 2822
Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
272
J'y connai rien en developpement... Comment inserer toute vos astuce dans mon code ?
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
824
if(preg_match("#^[a-z0-9!#$%&'*+/=?^_'{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_'{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$#", $_POST['email']))
{
     // Ici tu fais ce que tu as à faire si l'e-mail est valide
} else {
    // Si l'e-mail n'est pas valide
}

Messages postés
736
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2017
272
Il fonctionne, mais vous pouvez m'expliquer en bref ce code pour que je puisse le comprendre ? : )
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
824
Alors...

On utilise la méthode "preg_match()" qui, comme sa documentation l'indique, vérifie qu'une chaîne de caractères respecte bien un motif donné. Si elle le respecte, la méthode renvoie "vrai" ; sinon "faux". c'est pour ça qu'on peut mettre if(preg_match())...

preg_match() prend donc deux paramètres :

preg_match($motif, $chaineDeCaractère);

Dans notre cas la chaine de caractères est la variable $_POST['email']
Le motif lui, est écrit en expression régulière (ou expression rationnelle) qui est un modèle qui nécessite un apprentissage poussé avant d'être utilisé.

https://www.commentcamarche.net/contents/803-php-expressions-regulieres