requete qui ne fonctionne pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete qui ne fonctionne pas

Re: requete qui ne fonctionne pas

par jippy63 » 20 févr. 2011, 12:44

Merci pour ces infos mais tu ne pourais pas me construre ce code car la je galère et ceci me fera un bon exemple pour la suite ?
Merci d'avance :)

Re: requete qui ne fonctionne pas

par xTG » 20 févr. 2011, 12:40

Si tu supprimes la partie qui vérifie que l'email n'existe pas déjà dans la table c'est un peu normal. ;)
Pour valider la variable en tant qu'email tu peux utiliser des expressions régulières (preg_match()) ou bien filter_var().
Et rajoutes moi l'utilisation de la fonction mysql_real_escape_string(), n'importe qui pourrait faire ce qu'il veut de ton site actuellement avec une requête non protégée comme celle là...

Re: requete qui ne fonctionne pas

par jippy63 » 20 févr. 2011, 09:23

Je viens de le reduire a sa plus simple expression mais le pb c'est qu'il ne distingue pas ce qui s'inscrit, si c'est bien une edresse mail et s'il est deja inscrit, mais ca fonctionne !
Si on pouvais m'aider pour terminer ce code ce serait sympa ... :priere:

Code : Tout sélectionner

<? // ----- Traitement newsletter ----- // $email=$_POST['email']; $db = mysql_connect('localhost', 'xxxx', 'xxxx'); // connexion a la base mysql_select_db('xxxx',$db); // sélection de la base $date = gmdate("d M Y H:i:s"); $sql = "INSERT INTO newsletter(id, email, date) VALUES('','$email','$date')"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); mysql_close(); // on ferme la connexion // Rediriger vers la page de remerciement header("Location: ./index.htm?page=_newsletter_message.htm"); exit(); ?>

Re: requete qui ne fonctionne pas

par xTG » 19 févr. 2011, 17:22

Le soucis doit venir du ; que tu as mis, il me semble que la fonction mysql_query() ne l'autorise pas.

Il faut protéger les variables que tu utilises dans tes requêtes ! Utilises mysql_real_escape_string().

requete qui ne fonctionne pas

par jippy63 » 19 févr. 2011, 17:01

Bonjour, je suis debutant et je sêche sur une requete !

J'ai sur mon site un champ de formulaire "email" pour s'inscrire a la newsletter, ce champ est sur une page home en html :

Code : Tout sélectionner

<form method="post" action="newsletter.php" enctype="multipart/form-data"> <fieldset> <input type="text" value="Votre Email" name="email" class="input" size="33" style="margin-top:10px" /> <input type="submit" value="Valider" name="button" class="button2"/> </fieldset> </form>
Sur une autre page en php (newsletter.php) j'ai alors la requete pour ma base sql :

Code : Tout sélectionner

$email=$_POST['email']; $db = mysql_connect('localhost', 'xxxx', 'xxxx'); // connexion a la base mysql_select_db('xxxx',$db); // sélection de la base $req = "SELECT * FROM newsletter WHERE `email` = '".$_POST['email']."';"; $res = mysql_query($req); if(mysql_num_rows($res)>0) { $date = gmdate("d M Y H:i:s"); $sql = "INSERT INTO newsletter(id, email, date) VALUES('','$email','$date')"; mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); mysql_close(); // on ferme la connexion // Rediriger vers la page de remerciement exit(); } header("Location: ./index.htm?page=_newsletter_message.htm");
Ca ne fonctionne pas, rien ne va dans la BDD ?
Pouvez vous m'aider ?

Merci