[resolu]Verification 'variable || contenu champ table mysql'

Verification 'variable || contenu champ table mysql' [resolu] - PHP - Programmation

Marsh Posté le 29-10-2008 à 19:45:10    

Bonjour, voila j'ss pas un foudre de guerre en php et j'ai un petit prob...
 
Dans le code ci dessous, (qui fonctionne), j'aimerais ajouter la possibilité de vérifier si l'email à déjà été rentré dans la table mysql. Mais je sais pas comment effectuer la requete et la comparer...
 

Code :
  1. <?php
  2. if(isset($_POST['nom']))      $nom=$_POST['nom'];
  3. else      $nom="";
  4. if(isset($_POST['email']))      $email=$_POST['email'];
  5. else      $email="";
  6. // On vérifie si les champs sont vides  
  7. if(empty($nom) OR empty($email))
  8.     {
  9.     echo '<font color="red">Attention, tout les champs sont obligatoire!</font>';
  10.     }
  11. // Aucun champ n'est vide, on peut enregistrer dans la table
  12. else   
  13.     {
  14. // connexion à la base
  15. $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
  16. // sélection de la base  
  17. mysql_select_db('cdh',$db)  or die('Erreur de selection '.mysql_error());
  18. // on écrit la requête sql
  19. // *************************
  20. $sql1 = "INSERT INTO news_email(id, nom, email, localisation) VALUES('','$nom','$email','$localisation')";
  21. // on insère les informations du formulaire dans la table
  22.    
  23. mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());
  24.     // on affiche le résultat pour le visiteur
  25.     echo 'Vos infos on été ajoutées, vous allez être redirigé.';
  26. echo 'Si votre navigateurs ne vous redirige pas cliquez ici';
  27.     mysql_close();  // on ferme la connexion
  28.     }


 
 
j'avais pensé rajouter qlq chose comme ceci la ou est le commentaire //*****************

Code :
  1. $sql0 = "SELECT * FROM news_email WHERE email = '$email'";
  2. if($sql0 ['email'] == $email)
  3. {
  4. echo 'Cette adresse email existe déjà';
  5. }
  6. else
  7. {


 
Comment ça mon code est trop pourri, et pas securisé??? mais en attendant il fonctionne lol...
 
Voila j'attend vos conseils avec impatiente


Message édité par wazaki le 30-10-2008 à 12:49:49
Reply

Marsh Posté le 29-10-2008 à 19:45:10   

Reply

Marsh Posté le 29-10-2008 à 20:52:16    

Si tu ne veux pas te casser la tête avec ce genre de contrainte, tu la mets en db, c'est fait pour ça. Donc tu mets une clé unique sur e-mail et c'est réglé.
 
Maitenant si tu veux faire coté PHP comme tu le montres, fais un truc du genre :

Code :
  1. $sql0 = "SELECT 1 FROM news_email WHERE email = '$email'";
  2. $result = mysql_query($sql0);
  3. $num = mysql_num_rows($result);
  4. if($num > 0)
  5. {
  6. echo 'Cette adresse email existe déjà';
  7. }
  8. else
  9. {


mais au moins un mysql_real_escape_string sur tes 2 $_POST au dessus aussi

Reply

Marsh Posté le 30-10-2008 à 11:12:25    

La je sens que j'abuse, mais quel est la syntaxe pour appliquer mysql_real_escape sur mes variables $_post???
 

Code :
  1. // un truc du style:
  2. mysql_real_escape($_POST['email'])


 
ou alors je doit intégrer cela autrement???

Reply

Marsh Posté le 30-10-2008 à 11:22:14    

mysql_real_escape_string()

Code :
  1. if(isset($_POST['email']))      $email=mysql_real_escape_string($_POST['email']);


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-10-2008 à 11:49:55    

Petit problème quand je remplace ma ligne de code par la tienne, mon programme me retourne plusieurs erreurs
Notamment il trouve les champs vide... pas normal je pense... j'me ss ptet trompé...
 
edit:  
 
trouver ca sur php.net
 
Note: Une connexion MySQL est nécessaire avant d'utiliser la fonction mysql_real_escape_string(), sinon, une erreur de niveau E_WARNING sera générée, et FALSE sera retourné. Si link_identifier  n'est pas défini, la dernière connexion MySQL est utilisée.
 
mtnt ca marche mieux lol


Message édité par wazaki le 30-10-2008 à 11:58:51
Reply

Sujets relatifs:

Leave a Replay

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