Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2007, 19h18   #1
Invité de passage
 
Inscription : novembre 2005
Messages : 78
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 78
Points : 4
Points : 4
Par défaut Vérification e-mail dans formulaire

Bonjour à tous,

J'ai vu le code suivant dans les tutos, pour vérifier la validité des adresses emails dans les formulaires :

Code :
1
2
3
4
5
6
7
8
9
10
 
<?php
$regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
$email = "nom@domaine.com";
if (preg_match($regex, $email)) {
    echo "L'adresse $email est valide";
} else {
    echo "L'adresse $email n'est pas valide";
}
?>
J'ai un formulaire que j'utilise actuellement et j'essaye sans résultat d'inclure la vérification de l'email. Pourriez-vous m'aider ?

Merci d'avance.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
<?php
$nom = isset($_POST['nom'])?$_POST['nom']:'';
$prenom = isset($_POST['prenom'])?$_POST['prenom']:'';
$email = isset($_POST['email'])?$_POST['email']:'';
$contenu = isset($_POST['contenu'])?$_POST['contenu']:'';
$erreur1 = '<p class="alerte1">Veuillez indiquer votre nom'; 
$erreur2 = '<p class="alerte2">Veuillez indiquer votre prénom';
$erreur3 = '<p class="alerte3">Veuillez indiquer votre email';
$erreur4 = '<p class="alerte4">Veuillez indiquer votre message';
 
if(isset($_POST['action']) && !empty($nom)&&!empty($prenom)&&!empty($email)&&!empty($contenu))
{
    $destinataire = 'test@test.com';
    $titre= "Demande de contact";
    $headers = 'From: '.$email.' <'.$email.'>'."\r\n";
    $message = "";
    $message .= "nom: ".$nom."\n";
    $message .= "prenom: ".$prenom."\n";
    $message .= "email: ".$email."\n";
    $message .= "contenu: ".$contenu."\n";
 
    if(mail($destinataire,$titre,$message,$headers))
      echo "<script>window.location='confirmation.php'</script>";
}
?>
pp51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 19h29   #2
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
 
$nom = isset($_POST['nom'])?$_POST['nom']:'';
$prenom = isset($_POST['prenom'])?$_POST['prenom']:'';
$email = isset($_POST['email'])?$_POST['email']:'';
$contenu = isset($_POST['contenu'])?$_POST['contenu']:'';
[...]
 
if(isset($_POST['action']) && !empty($nom)&&!empty($prenom)&&!empty($email)&&!empty($contenu)) {
 if (preg_match($regex, $email)) {
    $destinataire = 'test@test.com';
    $titre= "Demande de contact";
    $headers = 'From: '.$email.' <'.$email.'>'."\r\n";
    $message = "";
    $message .= "nom: ".$nom."\n";
    $message .= "prenom: ".$prenom."\n";
    $message .= "email: ".$email."\n";
    $message .= "contenu: ".$contenu."\n";
 
     if(mail($destinataire,$titre,$message,$headers)) {
       echo "<script>window.location='confirmation.php'</script>";
     }
 }
 else {
  $erreur3='<p class="alerte3">Mail non conforme</p>';
 }
}
 
?>
Bonne soirée.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 20h22   #3
Invité de passage
 
Inscription : novembre 2005
Messages : 78
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 78
Points : 4
Points : 4
Merci SpiritOfDoc

Juste un petit problème: dès le chargement de ma page, j'ai le message "Mail non valide" qui s'affiche alors que tous les champs sont vides.

Ensuite, et je ne sais pas si c'est possible serait de mettre le message "Veuillez indiquer votre email" si le champ est vide ou "Mail non valide" s'il est invalide".
du type j'affiche $erreur3 si vide ou $erreur5 si l'email est invalide.

Merci encore !
pp51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 20h32   #4
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Voilà j'ai corrigé si dessus pour obtenir ce que tu voulais.

Au lieu d'ajouter une énième variable, j'ai juste modifier le contenu de $erreur3.

Bonne soirée.
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 20h48   #5
Invité de passage
 
Inscription : novembre 2005
Messages : 78
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 78
Points : 4
Points : 4
Thanks

Bon le test de l'adresse email fonctionne impec

J'ai juste un dernier problème: le message d'erreur "Mail non conforme" ne s'affiche pas s'il y a une erreur.

Merci
pp51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 20h54   #6
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Tu as bien fais un echo du $erreur3 quelque part ?
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 21h03   #7
Invité de passage
 
Inscription : novembre 2005
Messages : 78
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 78
Points : 4
Points : 4
En fait j'ai ça dans la ligne email de mon formulaire:

Code :
1
2
3
4
5
6
 
 <p>
    <label for="email">Votre e-mail *</label>
    <input class="textfield" type="text" name="email" id="email" value="<?php echo $email; ?>" title="Veuillez entrer votre e-mail" />
    <?php echo (isset($_POST['email'])&&empty($email))?$erreur3:''; ?>
  </p>
J'ai bien un echo, peut être pas le bon ?
pp51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 21h07   #8
Membre éclairé
 
Inscription : août 2006
Messages : 379
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : août 2006
Messages : 379
Points : 383
Points : 383
Désolé j'suis pressé mais quelque chose comme ça devrait aller :
Code :
1
2
3
if(isset($erreur3)){
   echo $erreur3;
}
Bonne fin de soirée .
SpiritOfDoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2007, 21h42   #9
Invité de passage
 
Inscription : novembre 2005
Messages : 78
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 78
Points : 4
Points : 4
Rien à faire

Bon au final, j'ai ajouté
Code :
1
2
 
$erreur5 = '<p class="alerte5">Veuillez indiquer un email valide';
et modifié
Code :
1
2
3
4
 
else {
$erreur3='<p class="alerte3">Mail non conforme</p>';
}
Par
Code :
1
2
3
4
 
else {
$erreur5;
}
Comment faut-il ajouter $erreur5 ci-desous ?

Code :
1
2
3
4
5
6
 
<p>
<label for="email">Votre e-mail *</label>
<input class="textfield" type="text" name="email" id="email" value="<?php echo $email; ?>" title="Veuillez entrer votre e-mail" />
<?php echo (isset($_POST['email'])&&empty($email))?$erreur3:''; ?>
</p>

Revoila le code complet
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
<?php
$regex = "/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i";
$nom = isset($_POST['nom'])?$_POST['nom']:'';
$prenom = isset($_POST['prenom'])?$_POST['prenom']:'';
$email = isset($_POST['email'])?$_POST['email']:'';
$contenu = isset($_POST['contenu'])?$_POST['contenu']:'';
$erreur1 = '<p class="alerte1">Veuillez indiquer votre nom'; 
$erreur2 = '<p class="alerte2">Veuillez indiquer votre prénom';
$erreur3 = '<p class="alerte3">Veuillez indiquer votre email';
$erreur4 = '<p class="alerte4">Veuillez indiquer votre message';
$erreur5 = '<p class="alerte4">Veuillez indiquer un email valide';
 
if(isset($_POST['action']) && !empty($nom)&&!empty($prenom)&&!empty($email)&&!empty($contenu)) {
 if (preg_match($regex, $email)) {
    $destinataire = 'nom@domaine.com';
    $titre= "Demande de contact";
    $headers = 'From: '.$email.' <'.$email.'>'."\r\n";
    $message = "";
    $message .= "nom: ".$nom."\n";
    $message .= "prenom: ".$prenom."\n";
    $message .= "email: ".$email."\n";
    $message .= "contenu: ".$contenu."\n";
 
     if(mail($destinataire,$titre,$message,$headers)) {
       echo "<script>window.location='confirmation.php'</script>";
     }
 }
 else {
  $erreur5;
 }
}
 
?>
 
 
<form method="post" action="index.php">
  <p class="titre">Vos coordonnées</p>
  <p>
    <label for="nom">Votre nom *</label>
    <input class="textfield" type="text" name="nom" id="nom" value="<?php echo $nom; ?>" title="Veuillez entrer votre nom" />
    <?php echo (isset($_POST['nom']) && empty($nom))?$erreur1:''; ?>
  </p>
  <p>
    <label for="prenom">Votre prénom *</label>
    <input class="textfield" type="text" name="prenom" id="prenom" value="<?php echo $prenom; ?>" title="Veuillez entrer votre prénom" />
    <?php echo (isset($_POST['prenom'])&&empty($prenom))?$erreur2:''; ?>
  </p>
  <p>
    <label for="email">Votre e-mail *</label>
    <input class="textfield" type="text" name="email" id="email" value="<?php echo $email; ?>" title="Veuillez entrer votre e-mail" />
    <?php echo (isset($_POST['email'])&&empty($email))?$erreur3:''; ?>
  </p>
  <p class="titre">Votre message</p>
  <p>
    <label for="message">A vous la parole *</label>
    <textarea name="contenu" cols="41" rows="4" id="contenu" title="Veuillez entrez ici votre message"><?php echo $contenu; ?></textarea>
    <?php echo (isset($_POST['contenu'])&&empty($contenu))?$erreur4:''; ?>
  </p>
  <p id="envoyer">
    <input type="image" alt="Envoyer" src="images/submit.gif" />
    <input type="hidden" name="action" value="envoyer" />
  </p>
</form>
Merci d'avance
pp51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h57.


 
 
 
 
Partenaires

Hébergement Web