Page 1 sur 1

Valider une adresse email, ptit souci

Posté : 21 sept. 2006, 01:26
par reman91
Bonjour,

J'ai trouvé le script suivant pour valider une adresse email et j'ai un ptit prb pour d'intégration de ce script que j'ai diviser en 2 partie que j'ai nommé et j'aimerai avoir le message d'erreur comme le reste de mes message. Mais j'aimerai biena aussi enlevé le message "echo "L'adresse e-mail est valide";" dans le seconde partie de vérif de la validité de l'email

$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail
if (preg_match($regex, $email)) {
    echo "L'adresse e-mail est valide";
} else {
    echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}

J'ai essayé de l'intégrer ainsi mais cela ne marche pas
<?php 
$MailTo = "[email protected]"; //adresse a laquelle sera envoyé le contenu du formulaire 
$MailSubject = "Infos du formulaire du site Designsite"; //texte qui va figurer dans le champ "sujet" du email 
$MailHeader = "From: e_mail\n"; //adresse email qui va figurer dans le champ "expéditeur" du email 

// intégration de la 1er partie du script pour vérifer la validité de l'email

$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail

// Fin intégration de la 1er partie du script pour vérifer la validité de l'email

if($verif == 1 )
{ 
$Envoi = 1;//initialisation de la variable envoi a 1
$MailBody .= "Civilité : ".$sexe."\n";
if ($nom == ''){ //nom du champ1 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Nom</font><br>'; //message qui s'affiche si le visiteur n'a pas rempli ce champ 
$Envoi = ''; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0 
} 
else { 
$MailBody .= "Nom : ".$nom."\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody 
} 
if ($prenom == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Prénom.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Prénom : ".$prenom."\n"; 
} 
if ($email == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ e-mail</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "email1 : ".$email."\n"; 
}

// 2eme partie de vérification de la validité de l'adresse email

if (preg_match($regex, $email)) {
    echo "L'adresse e-mail est valide";
} else {
    echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}

// Fin 2eme partie de vérification de la validité de l'adresse email
 
if ($societe == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ société</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Société : ".$societe."\n"; 
} 
if ($adresse == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ adresse</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Adresse : ".$adresse."\n"; 
} 
if ($ville == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ ville</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Ville : ".$ville."\n"; 
} 
if ($cp == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ code postale</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Code postale : ".$cp."\n"; 
} 
if ($fonction == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ fonction</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Fonction : ".$fonction."\n"; 
} 
if ($telephone == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ téléphone</font><br>'; 
$Envoi = '';$verif = ''; 
} 
else { 
$MailBody .= "Téléphone : ".$telephone."\n"; 
} 
if ($commentaire == ''){ 
echo '<font face="verdana" size="2">Vous avez oublié de remplir le champ message.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Message : ".$commentaire."\n"; 
} 
}
//Envoi du message 

if ($Envoi == 1) { //vérification que la variable envoi est bien a 1 
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message 
echo '<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci.</font>'; 
}
?>
</div><!-- Cadre Message d'alerte champ formualire -->

<?php
Merci de votre aide !!

Posté : 21 sept. 2006, 02:15
par graphistnet
Là il est plus de 2h du matin et vu comme ca je n'ai plus le courage de regarder dans le code, mets tout ça dans un BBcode approprié (php) et une petite indentation ne serait pas de trop :wink:
Je dis ca pour ceux qui verront ca demain matin parce que là je vais me coucher :lol:

Posté : 21 sept. 2006, 15:23
par jpaul
Salut,

Pourquoi ne fais-tu pas une fonction avec ton code :
function ValidEmail($email) {
$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail
if (preg_match($regex, $email)) {
    return TRUE;
} else {
    return FALSE;
}
}
Après, il ne reste plus qu'à faire un test :
if (ValidEmail("[email protected]")) {
// Code si email OK
}
else {
// Code si email KO
}

Re: Valider une adresse email, ptit souci

Posté : 21 sept. 2006, 15:25
par reman91
Bonjour,

J'ai trouvé le script suivant pour valider une adresse email et j'ai un ptit prb pour d'intégration de ce script que j'ai diviser en 2 partie que j'ai nommé et j'aimerai avoir le message d'erreur comme le reste de mes message. Mais j'aimerai biena aussi enlevé le message "echo "L'adresse e-mail est valide";" dans le seconde partie de vérif de la validité de l'email

$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail
if (preg_match($regex, $email)) {
    echo "L'adresse e-mail est valide";
} else {
    echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}

J'ai essayé de l'intégrer ainsi mais cela ne marche pas
<?php 
$MailTo = "[email protected]"; //adresse a laquelle sera envoyé le contenu du formulaire 
$MailSubject = "Infos du formulaire"; //texte qui va figurer dans le champ "sujet" du email 
$MailHeader = "From: e_mail\n"; //adresse email qui va figurer dans le champ "expéditeur" du email 

// intégration de la 1er partie du script pour vérifer la validité de l'email

$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail

// Fin intégration de la 1er partie du script pour vérifer la validité de l'email

if($verif == 1 )
{ 
$Envoi = 1;//initialisation de la variable envoi a 1
$MailBody .= "Civilité : ".$sexe."\n";
if ($nom == ''){ //nom du champ1 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Nom</font><br>'; //message qui s'affiche si le visiteur n'a pas rempli ce champ 
$Envoi = ''; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0 
} 
else { 
$MailBody .= "Nom : ".$nom."\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody 
} 
if ($prenom == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Prénom.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Prénom : ".$prenom."\n"; 
} 
if ($email == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ e-mail</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "email1 : ".$email."\n"; 
}

// 2eme partie de vérification de la validité de l'adresse email

if (preg_match($regex, $email)) {
    echo "L'adresse e-mail est valide"; // partie à supprimer ce message ne dois pas apparaître
} else {
    echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}

// Fin 2eme partie de vérification de la validité de l'adresse email
 
if ($societe == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ société</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Société : ".$societe."\n"; 
} 
if ($adresse == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ adresse</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Adresse : ".$adresse."\n"; 
} 
if ($ville == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ ville</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Ville : ".$ville."\n"; 
} 
if ($cp == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ code postale</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Code postale : ".$cp."\n"; 
} 
if ($fonction == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ fonction</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Fonction : ".$fonction."\n"; 
} 
if ($telephone == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ téléphone</font><br>'; 
$Envoi = '';$verif = ''; 
} 
else { 
$MailBody .= "Téléphone : ".$telephone."\n"; 
} 
if ($commentaire == ''){ 
echo '<font face="verdana" size="2">Vous avez oublié de remplir le champ message.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Message : ".$commentaire."\n"; 
} 
}
//Envoi du message 

if ($Envoi == 1) { //vérification que la variable envoi est bien a 1 
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message 
echo '<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci.</font>'; 
}
?>
</div><!-- Cadre Message d'alerte champ formualire -->

<?php
Merci de votre aide !!

Posté : 21 sept. 2006, 15:47
par mere-teresa
J'ai pas compris ton dernier message...il ressemble trop au 1er !

Posté : 21 sept. 2006, 15:56
par reman91
je fais la vérification si mon champ email est vide et si non je le concatenne dans ma variable $MailBody
if ($email == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ e-mail</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "email1 : ".$email."\n"; 
}
La je vérifi la composition de l'email ainsi
if (preg_match($regex, $email)) {
    echo "L'adresse e-mail est valide";
} else {
    echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}
donc si je met ces deux code à la suite l'un de l'autre, je n'arrive pas le résultat voulu, c'est à dire que si l'email est vide, le message d'erreur dois s'afficher (ce qui est le cas) et si la structure de l'email n'est pas correct, le message d'erreur (l'email n'est pas valide) doit apparaître mais pas celui de (l'email est valide).

Merci.

Posté : 21 sept. 2006, 16:27
par jpaul
donc si je met ces deux code à la suite l'un de l'autre, je n'arrive pas le résultat voulu, c'est à dire que si l'email est vide, le message d'erreur dois s'afficher (ce qui est le cas) et si la structure de l'email n'est pas correct, le message d'erreur (l'email n'est pas valide) doit apparaître mais pas celui de (l'email est valide).
mais visiblement si je met ces 2 code ainsi je n'arrive pas au résultat voulu, avez vous une idée ?

Merci.
As-tu vu le message que j'ai posté à 14H23 (juste avant toi) ?

Posté : 21 sept. 2006, 16:31
par reman91
Salut,

Après, il ne reste plus qu'à faire un test :
if (ValidEmail("[email protected]")) {
// Code si email OK
}
else {
// Code si email KO
}
oui, mais c'est pas ce que je veux, et je ne comprend pas ton second code pourquoi [email protected] ?

Bon j'ai essayé ca aussi
if ($email == '') && !(preg_match($regex, $email)){ 
echo '<font face="verdana" size="2">L\'adresse e-mail n\'est pas valide.</font><br>';
}
Cela me provoque l'erreur suivante

Code : Tout sélectionner

Parse error: syntax error, unexpected T_BOOLEAN_AND .....

Posté : 21 sept. 2006, 17:02
par jpaul
Ben tu remplaces "[email protected]" par ton $email.

En fait tu peux faire :
if (ValidEmail($email)) {
// Code si email OK
}
else {
// Code si email KO
echo "<BR>L'adresse : '".$email."' est invalide";
} 
Le code que tu as récupéré et que j'ai mis en fonction te retournera FALSE si $email est vide...

Posté : 21 sept. 2006, 17:21
par reman91
le truc c'est que je ne veux avoir un messaage d'erreur lorsque est seulement lorsque l'adresse email n'est pas correcte, si elle est correct ne rien afficher

Posté : 21 sept. 2006, 17:53
par jpaul
le truc c'est que je ne veux avoir un messaage d'erreur lorsque est seulement lorsque l'adresse email n'est pas correcte, si elle est correct ne rien afficher
Ben il te suffit de remplacer la ligne :
// Code si email OK
par les lignes de code que tu veux exécuter quand l'adresse est OK (sans rien afficher)...

Posté : 21 sept. 2006, 20:27
par Invité
Bon j'ai essayé
1) je défini le role de ma fonction
2) je met la condition if de ma fonction
3) je place le code de vérif des champs
4) je place la suite else{ si mon email est pas ok affiche le message
5) code d'envoi du formulaire si tout ok

Mais le truc c'est que j'ai tjrs le message (votre adresse email est invalide) en haut de ma page lors du 1er chargement de la page.
<?php 
$MailTo = "monemail@dom*.com"; //adresse a laquelle sera envoyé le contenu du formulaire 
$MailSubject = "Infos du formulaire"; //texte qui va figurer dans le champ "sujet" du email 
$MailHeader = "From: e_mail\n"; //adresse email qui va figurer dans le champ "expéditeur" du email 
// fonction de vérif comosition email
function ValidEmail($email) {
$atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
$regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
'(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
                                // séparés par des caractères autorisés avant l'arobase
'@' .                           // Suivis d'un arobase
'(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                // séparés par des points
$domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
// test de l'adresse e-mail
if (preg_match($regex, $email)) {
    return TRUE;
} else {
    return FALSE;
}
} 
// Fin fonction de vérif comosition email

if($verif == 1 )
{ 
$Envoi = 1;//initialisation de la variable envoi a 1
// suite 2eme partie de vérif ardesse email
if (ValidEmail($email)) {

// Fin Suite partie 2 validation email
$MailBody .= "Civilité : ".$sexe."\n";
if ($nom == ''){ //nom du champ1 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Nom</font><br>'; //message qui s'affiche si le visiteur n'a pas rempli ce champ 
$Envoi = ''; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0 
} 
else { 
$MailBody .= "Nom : ".$nom."\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody 
} 
if ($prenom == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ Prénom.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Prénom : ".$prenom."\n"; 
} 
if ($email == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ e-mail</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "email1 : ".$email."\n"; 
}
if ($societe == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ société</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Société : ".$societe."\n"; 
} 
if ($adresse == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ adresse</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Adresse : ".$adresse."\n"; 
} 
if ($ville == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ ville</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Ville : ".$ville."\n"; 
} 
if ($cp == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ code postale</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Code postale : ".$cp."\n"; 
} 
if ($fonction == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ fonction</font><br>'; 
$Envoi = ''; 
} 
else { 
$MailBody .= "Fonction : ".$fonction."\n"; 
} 
if ($telephone == ''){ 
echo '<font face="verdana" size="2">Vous n\'avez pas complété le champ téléphone</font><br>'; 
$Envoi = '';$verif = ''; 
} 
else { 
$MailBody .= "Téléphone : ".$telephone."\n"; 
} 
if ($commentaire == ''){ 
echo '<font face="verdana" size="2">Vous avez oublié de remplir le champ message.</font><br>'; 
$Envoi =''; 
} 
else { 
$MailBody .= "Message : ".$commentaire."\n"; 
} 
}
// suite 2eme partie de vérif ardesse email
// Code si email KO

}else{
echo "L'adresse email est invalide";
}
// Fin Suite partie 2 validation email
//Envoi du message 

if ($Envoi == 1) { //vérification que la variable envoi est bien a 1 
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message 
echo '<p><font face=verdana size=2>Votre message a bien été envoyé.<br>Merci.</font>'; 

}
?>

Posté : 21 sept. 2006, 22:41
par jpaul
Bonsoir,

J'ai mis le script du dernier post dans un editeur.
J'ai rergardé la strcuture des conditions, sauf erreur de ma part elle est la suivante :
if($verif == 1 )
{ 
// Partie de code retirée
}else{
echo "L'adresse email est invalide";
}
Le script affiche :
L'adresse email est invalide
car $verif est dfférent de 1.

Quel éditeur utilises tu pour écrire tes scripts ?
Moi j'utilise Notepad++.
Je suis aussi en train de tester PsPad.
Ce sont des éditeurs de texte libres qui permettent de retrouver les parenthèses et accolades fermantes/ouvrantes. C'est très utile pour vérifier la structure du code.

Posté : 22 sept. 2006, 23:16
par Invité
salut,
Tu as raison, le prb est l'affichage en permanance de la phrase erreur de la structure email,
oui, verif n'est pas = 1 dous mon prb,
à voir comment régler cela.

Je me sert de dreamweaver, mais hélas, les espaces, structure paranthèses ne sont pas marqué, une amélioration à faire sur ce logiciel.
Quand à ceux que tu cites, je ne les connais pas du tout, lequelele me conseils tu ?

Merci.

Posté : 25 sept. 2006, 17:46
par jpaul
Ben je ne sais pas trop quoi dire, ce sont juste 2 exemples, il doit exister d'autres produits.
En ce qui me concerne, je me suis longtemps satisfait de Notepad++.
Je me penche sur PsPad car à mon boulot on travaille sur des gros projets (dans d'autres langages) et mes collègues ont eu des plantage avec notepad++. C'est pourquoi on regarde PsPad mais nous n'avons pas encore pris de décision.

Bonne continuation.