[PHP]probleme vérification e-mail +mysql

probleme vérification e-mail +mysql [PHP] - PHP - Programmation

Marsh Posté le 31-03-2008 à 18:07:45    

Bonjour j'ai un problème actuellement sur un bout de code.
 
En faites je veux que la fonction php incluse me test l'email et les autres champs ( nom, prénom etc), ça marche très bien pour les champs nom etc mais pas avec la fonction mail.
 
En fait si ça marche pour l'email ça m'indique bien qu'il faut que l'utilisateur rentre correctement son email mais ca me l'insère quand même dans ma table...
 
 
voici le code en question.
 

Code :
  1. <?php
  2. // On commence par récupérer les champs
  3. if (isset($_POST['email']))
  4. {
  5. $_POST['email'] = htmlspecialchars($_POST['email']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  6.     if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
  7.     {
  8.         echo 'L\'adresse ' . $_POST['email'] . ' est <strong>valide</strong> !';
  9.     }
  10.     else
  11.     {
  12.         echo 'L\'adresse ' . $_POST['email'] . ' n\'est pas valide, recommencez !';
  13.     }
  14. }
  15. if(isset($_POST['nom']))        $nom=$_POST['nom'];
  16. else      $nom="";
  17. if(isset($_POST['prenom']))       $prenom=$_POST['prenom'];
  18. else      $prenom="";
  19. if(isset($_POST['email']))       $email=$_POST['email'];
  20. else      $email="";
  21. // On vérifie si les champs sont vides
  22. if(empty($nom) OR empty($prenom) OR empty($email) )
  23.     {
  24.     echo '<p><font color="red">Attention, veuillez remplir tous les champs qui sont identiés par un *</font></p>';
  25.     }
  26. // Aucun champ n'est vide, on peut enregistrer dans la table
  27. else   
  28.     {
  29.     // connexion à la base
  30. $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
  31. // sélection de la base   
  32.     mysql_select_db('PCB',$db)  or die('Erreur de selection '.mysql_error());
  33.     // on regarde si l'url existe déjà
  34.     $sql = "SELECT id FROM contact WHERE email='$email'";
  35.     $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  36.    
  37.     // on compte le nombre de résultats
  38.     $res = mysql_num_rows($req);
  39.     if($res!=0)  // l'url existe déjà, on affiche un message d'erreur
  40.         {
  41.     echo '<p><font color="red">Désolé, mais cette URL existe déjà dans notre base.</font></p>';
  42.         }
  43.     else  // L'url n'existe pas, on insère les informations du formulaire dans la table  
  44.     // on écrit la requête sql
  45.  {
  46.     $sql = "INSERT INTO contact(id, nom, prenom, email) VALUES('','$nom','$prenom','$email')";
  47.    
  48.     // on insère les informations du formulaire dans la table
  49.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  50.     // on affiche le résultat pour le visiteur
  51.     echo '<p>Vos infos on été ajoutées.</p>';
  52.  }
  53.     mysql_close();  // on ferme la connexion
  54.     }
  55. ?>


Reply

Marsh Posté le 31-03-2008 à 18:07:45   

Reply

Marsh Posté le 31-03-2008 à 18:26:10    

Tu vérifies ton adresse mail mais si elle est fausse, tu ne fais rien de spécial (à part le dire).
Il faudrait déplacer ton code qui se trouve entre les lignes 7 et 14 à la ligne 31 en remplaçant le if par un elseif.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 31-03-2008 à 21:36:28    

oki merci je vais tester ça ;)
 
ca<marche merki bcp  :jap:


Message édité par Roken le 31-03-2008 à 22:20:22
Reply

Marsh Posté le 03-04-2008 à 17:54:39    

Ah en faites j'ai fais ce que tu as dis mais cela ne marche pas ^^
 
Enfin il me dit juste quand j'envoie le formulaire "l'adresse mail est valide" ou "l'adresse mail n'est pas valide".
 
Si elle est valide elle n'envoie pas le formulaire dans la table....

Reply

Marsh Posté le 06-04-2008 à 23:06:32    

un ti up :)

Reply

Marsh Posté le 09-04-2008 à 11:20:31    

tu peux poster ton nouveau code, pour voir où tu as placé le contrôle du mail (suite au conseil de babass), et comment tu gère la fait qu'il soit bon ou pas ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-04-2008 à 10:31:47    

voici le code.
 

Code :
  1. <?php
  2. // On commence par récupérer les champs
  3. if(isset($_POST['nom']))        $nom=$_POST['nom'];
  4. else      $nom="";
  5. if(isset($_POST['prenom']))       $prenom=$_POST['prenom'];
  6. else      $prenom="";
  7. if(isset($_POST['email']))       $email=$_POST['email'];
  8. else      $email="";
  9. // On vérifie si les champs sont vides
  10. if(empty($nom) OR empty($prenom) OR empty($email) )
  11.     {
  12.     echo '<p><font color="red">Attention, veuillez remplir tous les champs !</font></p>';
  13.     }
  14. // on test l'email
  15. elseif (isset($_POST['email']))
  16. {
  17. $_POST['email'] = htmlspecialchars($_POST['email']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  18.     if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
  19.     {
  20.         echo '<p>L\'adresse ' . $_POST['email'] . ' est <strong>valide</strong> !</p>';
  21.     }
  22.     else
  23.     {
  24.         echo 'L\'adresse ' . $_POST['email'] . ' n\'est pas valide, recommencez !';
  25.     }
  26. }
  27. // Aucun champ n'est vide, on peut enregistrer dans la table
  28. else   
  29.     {
  30.     // connexion à la base
  31. $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
  32. // sélection de la base   
  33.     mysql_select_db('PCB',$db)  or die('Erreur de selection '.mysql_error());
  34.     // on regarde si l'url existe déjà
  35.     $sql = "SELECT id FROM contact WHERE email='$email'";
  36.     $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  37.    
  38.     // on compte le nombre de résultats
  39.     $res = mysql_num_rows($req);
  40.     if($res!=0)  // l'url existe déjà, on affiche un message d'erreur
  41.         {
  42.     echo '<p><font color="red">Désolé, mais cette URL existe déjà dans notre base.</font></p>';
  43.         }
  44.     else  // L'url n'existe pas, on insère les informations du formulaire dans la table  
  45.     // on écrit la requête sql
  46.  {
  47.     $sql = "INSERT INTO contact(id, nom, prenom, email) VALUES('','$nom','$prenom','$email')";
  48.    
  49.     // on insère les informations du formulaire dans la table
  50.     mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  51.     // on affiche le résultat pour le visiteur
  52.     echo '<p>Vos infos on été ajoutées.</p>';
  53.  }
  54.     mysql_close();  // on ferme la connexion
  55.     }
  56. ?>


Reply

Marsh Posté le 21-04-2008 à 12:22:13    

Salut
 
C'est normal que cela ne marche pas vu qu'un fois passé dans le elsif pour tester le mail, tu ne peux plus passer par le else.
 
Je te conseille de mettre ta vérification d'email dans une fonction qui retourne true or false et d'écrire :
 

Code :
  1. <?php
  2. ...
  3. // On vérifie si les champs sont vides et l'email
  4. if(empty($nom) OR empty($prenom) OR empty($email) OR test_email($email) === false)
  5. {
  6.      echo '<p><font color="red">Attention, veuillez remplir tous les champs avec des valeurs correctes !</font></p>';
  7. }
  8. else 
  9. {
  10.      // connexion à la base
  11. ...
  12. ?>

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed