Bonjour,
J'ai un formulaire avec un champ <textarea name="description"... et j'ai remarqué que lorsque l'utilisateur utilise les guillemets : "". le formulaire n'est pas enregistré dans la bdd. Que dois je faire.
Merci d'avance
Bonjour,
J'ai un formulaire avec un champ <textarea name="description"... et j'ai remarqué que lorsque l'utilisateur utilise les guillemets : "". le formulaire n'est pas enregistré dans la bdd. Que dois je faire.
Merci d'avance
ou
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part addslashes($description) ; // puis stripslashes() pour l'affichage
ou
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part htmlspecialchars($description, ENT_QUOTES);
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part htmlentities($description, ENT_QUOTES);
Code : Sélectionner tout - Visualiser dans une fenêtre à part <textarea name="description" cols=45 rows=5></textarea>
as tu essayé les fonction que je t'ai mis plus haut.
il faut les appeler avant d'envoyer à la DB.
exemple avec addslashes() :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $x_description = addslashes($description); $sql = "INSERT INTO tatable (champ_description) VALUES ('$x_description')";
Utilise htmlspecialchars($description) au lieu de htmlspecialchars($description, ENT_QUOTE)
Cela te protègera des attaques XSS du genre
<script> .... </script> qu'un utilisateur mal intentionné pourrait saisir dans ton textarea
J'ai une question:Envoyé par N1bus
Si je mets juste
est-ce que ca marche?
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $description = addslashes($description); $sql = "INSERT INTO tatable (description) VALUES ('$description')";
Je n'ai pas encore essayer ta solution
Pareil .est-ce que ca marche?
(moi, je mets toujours des noms de variables avec des préfixes lorsque l'original a été modifié.
ça me permet de savoir où j'en suis si la variable réapparait plus tard dans le code- surtout si elle réapparait 200 lignes plus loin ....)
Alors il ne faut pas utiliser addslashes mais http://mysql_real_escape_string
et ne pas utiliser htmlentities/htmlspecialchars avant d'inserer en bd. htmlentities/htmlspecialchars sont destiné à l'affichage, pas au stockage.
Donc dans mon cas pour enregistrer dans la base je dois faire ca ???Envoyé par Mr N.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $description = mysql_real_escape_string($description);
Merci beaucoup. Est ce que je dois faire ca pour tous les champs de mon formulaire ou bien juste les champs du type textearea?
tous les champs. le mieux est d'utiliser l'exemple 3 de la doc officielle :
http://php.net/mysql_real_escape_string#AEN116943
Je pense avoir oublié de préciser un truc important. Mon formulaire est en plusieurs pages et je transmet les info par la méthode POST d'une page à l'autre.
En page 1 j'ai le champ description et d'autres champ. Voici le code du champ description:
En page2 je transmet les info comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <textarea name="description" cols=45 rows=5 ></textarea>
En page 3 je transmet les infos et j'enregistre dans la base
Code : Sélectionner tout - Visualiser dans une fenêtre à part $description=""; if(!empty($_POST["description"])) $description=$_POST["description"];
J'ai essayé d'ajouter mysql_real_escape_string dans le code comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part $description=""; if(!empty($_POST["description"])) $description=$_POST["description"];
mais ca n'enregitre pas toutes les infos dans la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $description=""; if(!empty($_POST["description"])) $description=mysql_real_escape_string($_POST["description"]);
Par exemple pour la phrase :
Ca enregistreVds "superbe" voiture noire/bleu
Que dois je faire???Vds \\\
Car ta variable $description dans ta deuxième page n'a pas une portée indéfinie. Elle est limitée à l'exécution du script. Pour la transporter vers la troisième page tu dois l'insérer dans le formulaire de la deuxième page dans un champ hidden:
Puis en cliquant sur le bouton submit du formulaire cela augmentera la portée de la variable $description au script de la page suivante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="hidden" name="description" value="<?php echo $description ?>" />
Ou alors tu utilises les sessions.
C'est exactement ce que je fais. Je passe les variables sur la page 2 avec ce codeEnvoyé par zyongh
et ensuite je les enregistre. Mon problème est de traiter les caractères spéciaux du style "", ', /.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="hidden" name="description" value="<?php echo $description ?>" />
Partager