Comparer deux inputs

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 : Comparer deux inputs

par lacfab » 12 sept. 2006, 17:17

c bon j'ai trouvé j'ai mis stripslashes dans mon textarea également :)
Merci tout plein

par lacfab » 12 sept. 2006, 16:35

Alors j'ai mis ceci :

Code : Tout sélectionner

$detail_prod = stripslashes(HTMLentities($detail_prod,ENT_QUOTES));
et maintenant il m'affiche :
c\'est super cool

Déjà deux slash de moins mais il en reste malheureusement encore un ... grrr

par Ryle » 12 sept. 2006, 14:42

Quand tu envois des variables au serveur, par défaut php va protéger les apostrophes avec des "\", ce qui est plus simple pour les utiliser dans du sql (cf la config de ton serveur)

Toutefois, si tu veux les réafficher, cela n'est pas commode du tout. Tu peux regarder du côté de fonction comme stripslashes() pour les retirer :)

par lacfab » 12 sept. 2006, 13:09

Salut

Toujours pas d'idée sur ma dernière question ? :oops: :cry:

par lacfab » 05 sept. 2006, 17:23

super on y est presque !

Alors maintenant il convertit bien les apostrophes mais si j'ai une erreur de différence entre les prix ... au retour il affiche ça :

c\\\'est super cool
alors que le texte d'origine vous vous en doutez bien c'est
c'est super cool

voici mon code :

Code : Tout sélectionner

case "modifier": if ($AH!="ok"){ // Requête pour trouver les coordonnées correspondantes au id $requete = mysql_query("select * FROM shop_produits where id_prod='$id_prod'") or die ('ERREUR 2<br>'. mysql_error()); // Sorties des coordonnées $id_prod = mysql_result($requete,0,"id_prod"); $souscat_prod = mysql_result($requete,0,"souscat_prod"); $activ_prod = mysql_result($requete,0,"activ_prod"); $ref_prod = mysql_result($requete,0,"ref_prod"); $titre_prod = mysql_result($requete,0,"titre_prod"); $detail_prod = mysql_result($requete,0,"detail_prod"); $prix_prod = mysql_result($requete,0,"prix_prod"); $promo_prod = mysql_result($requete,0,"promo_prod"); } // Affichage echo "<form action='produits_ajout.php?page=2&mode=modifier2&id_prod=$id_prod' method=post> <center><table border=0 class=texte> <tr><td align=right valign=top>Référence</font></td><td><input type='text' name='ref_prod' value='$ref_prod' size=15></td></tr> <tr><td align=right valign=top>Titre</font></td><td><input type='text' name='titre_prod' value='$titre_prod' size=30></td></tr> <tr><td align=right valign=top>Détail </td><td><textarea name='detail_prod' cols=50 rows=4 value=''>$detail_prod</textarea></td></tr> <tr><td align=right valign=top>Prix</font></td><td><input type='text' name='prix_prod' value='$prix_prod' size=4></td></tr> <tr><td align=right valign=top>Prix promo</font></td><td><input type='text' name='promo_prod' value='$promo_prod' size=4></td></tr> <tr><td colspan=2 valign=top align=center> <input type='submit' value='Modifier ce produit'></td></tr> </table></center></form>"; break; case "modifier2": $soustraction = $promo_prod - $prix_prod; $detail_prod = HTMLentities($detail_prod,ENT_QUOTES); if ($soustraction >= "0.0") { echo "<center><font color=red><b>ERREUR</b><br>Le prix de promotion est plus élevé que le prix normal.<br> Recommencez la saisie.</font><br><br> <a href='produits_ajout.php?page=2&mode=modifier&AH=ok&id_prod=$id_prod&ref_prod=$ref_prod&titre_prod=$titre_prod&detail_prod=$detail_prod&prix_prod=$prix_prod&promo_prod=$promo_prod'>Retour à la page de modification</a>"; } else{ $resultat = mysql_query("update shop_produits set souscat_prod='$souscat_prod', ref_prod='$ref_prod', titre_prod='$titre_prod', detail_prod='$detail_prod', prix_prod='$prix_prod', promo_prod='$promo_prod' where id_prod='$id_prod'") or die ('ERREUR 3<br>'. mysql_error()); echo "<center>Les changements ont été pris en compte<p><a href='produits_ajout.php' target='b'>Retour aux produits</a></p></center><BR>"; } break;

par Ryle » 05 sept. 2006, 16:59

Il te faut protéger les chaines que tu récupères en mettant des antislash devant les apostrophes (voire les guillemets)... Tu peux pour cela utiliser les fonctions addslashes(), htmlspecialchars(), mysql_escape_string() ...

A toi de voire celle qui te convient le mieux et les paramètres à passer selon ce que tu veux faire de la chaine :)

par lacfab » 05 sept. 2006, 16:53

Bon voilà j'ai ce que je voulais ... il me fait un message d'erreur si le prix promo est plus élevé que le prix normal. Par contre si dans mon textarea j'ai un ' alors ça me plante tout au retour de la page (si on fait une erreur ...)
Comment faire pour que le ' passe dans l'url sans problème ?
Merci



Code : Tout sélectionner

case "modifier": if ($AH!="ok"){ // Requête pour trouver les coordonnées correspondantes au id $requete = mysql_query("select * FROM shop_produits where id_prod='$id_prod'") or die ('ERREUR 2<br>'. mysql_error()); // Sorties des coordonnées $id_prod = mysql_result($requete,0,"id_prod"); $souscat_prod = mysql_result($requete,0,"souscat_prod"); $activ_prod = mysql_result($requete,0,"activ_prod"); $ref_prod = mysql_result($requete,0,"ref_prod"); $titre_prod = mysql_result($requete,0,"titre_prod"); $detail_prod = mysql_result($requete,0,"detail_prod"); $prix_prod = mysql_result($requete,0,"prix_prod"); $promo_prod = mysql_result($requete,0,"promo_prod"); } // Affichage echo "<form action='produits_ajout.php?page=2&mode=modifier2&id_prod=$id_prod' method=post> <center><table border=0 class=texte> <tr><td align=right valign=top>Référence</font></td><td><input type='text' name='ref_prod' value='$ref_prod' size=15></td></tr> <tr><td align=right valign=top>Titre</font></td><td><input type='text' name='titre_prod' value='$titre_prod' size=30></td></tr> <tr><td align=right valign=top>Détail </td><td><textarea name='detail_prod' cols=50 rows=4 value=''>$detail_prod</textarea></td></tr> <tr><td align=right valign=top>Prix</font></td><td><input type='text' name='prix_prod' value='$prix_prod' size=4 onKeypress='if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false; if(event.which < 45 || event.which > 57) return false;'>€</td></tr> <tr><td align=right valign=top>Prix promo</font></td><td><input type='text' name='promo_prod' value='$promo_prod' size=4 onKeypress='if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false; if(event.which < 45 || event.which > 57) return false;'>€</td></tr> <tr><td colspan=2 valign=top align=center> <input type='submit' value='Modifier ce produit'></td></tr> </table></center></form>"; break; case "modifier2": $soustraction = $promo_prod - $prix_prod; if ($soustraction >= "0.0") { echo "<center><font color=red><b>ERREUR</b><br>Le prix de promotion est plus élevé que le prix normal.<br> Recommencez la saisie.</font><br><br> <a href='produits_ajout.php?page=2&mode=modifier&AH=ok&id_prod=$id_prod&ref_prod=$ref_prod&titre_prod=$titre_prod&detail_prod=$detail_prod&prix_prod=$prix_prod&promo_prod=$promo_prod'>Retour à la page de modification</a>"; } else{ $resultat = mysql_query("update shop_produits set souscat_prod='$souscat_prod', ref_prod='$ref_prod', titre_prod='$titre_prod', detail_prod='$detail_prod', prix_prod='$prix_prod', promo_prod='$promo_prod' where id_prod='$id_prod'") or die ('ERREUR 3<br>'. mysql_error()); echo "<center>Les changements ont été pris en compte<p><a href='produits_ajout.php' target='b'>Retour aux produits</a></p></center><BR>"; } break;

par zeus » 04 sept. 2006, 20:28

:shock:

euh, si un champ est identique à un autre, on peut dire qu'un champ est égal à un autre donc que
champ1 = champ2

Rien de bien plus compliqué ;)

par lacfab » 04 sept. 2006, 19:22

Euh oui j'ai déjà essayé en javascript ... personne n'aurais la fonction complète à me montrer ? Je sais j'abuse mais je suis sur du php depuis ce matin et là je calcule plus rien :shock:

Merchiiiiiiiiiiiiiiii

par Ryle » 04 sept. 2006, 19:21

En javascript il te suffit de comparer les deux champs, d'afficher un message d'alerte et de bloquer l'envoi du formulaire s'il y a une erreur.

Code : Tout sélectionner

document.nom_du_form.nom_du_champ.value
te permet de récupérer la valeur d'un champ :)

En php, tu récupères tes données et tu fais le même test. En cas d'erreur, au lieu d'enregistrer les données, tu réaffiches ta page avec les données erronées et un message d'erreur

Comparer deux inputs

par lacfab » 04 sept. 2006, 18:58

Salut,

Pour faire simple ... j'ai un script d'ajouts de produits. J'ai deux champs de prix : "prix" qui contient le prix des produits, et "promo" qui content le prix de promotion (et qui vaut sur la page publique le prix normal barré avec le prix promo en rouge à côté). Je voudrais qu'à l'ajout ou à la modification (dans la partie de gestion) que si mon prix promo est plus élevé que le prix normal, ça me fasse une erreur (alert par exemple, ou message rouge) m'obligeant à rectifier avant d'enregistrer ...
j'ai recherché sur le forum, sur le net, essayé divers trus mais je n'y arrive pas ...
Merci d'avance de vos lumières :)