OVH Cloud OVH Cloud

Caractere ' dans les variables

4 réponses
Avatar
TT.hierry_antisp
Bon, je suis sur que c'est une question de néophyte mais j'y vais quand
même:

Je me demande si des caractères ' tapés par les utilisateurs dans des
champs texte ne vont pas me causer des problèmes lorsque je vais les
inclure ensuite dans des tables MySQL.

Imaginons que je récupère le texte "Salut l'ami" dans une variable
$text: $text="salut l'ami";
Ensuite je veux entrer ce texte dans une table mysql avec une requete du
genre:
$query="INSERT INTO table (texte_util) VALUES('$text')";
$resultat=mysql_query($query, $id_link);

est ce que le ' de mon texte ne va pas être interprété par mysql comme
la fin de la valeur à entrer dans le champ : Salut l, la requête posant
par ailleurs un problème de syntaxe puisque reste ami' en trop dont
mysql ne saura pas quoi faire?

Comment résoudre ce problème? Mettre un \ avant le ' serait-il la
solution? Faut-il alors examiner avec du code tout ce qui est entré par
l'utilisateur pour mettre des \ avant les caractères ' et "?

Merci de vos lumières.

--
TThierry __|__
http://aerostop.free.fr \___(x)___/
Replace my _antisp@m_ by @. ! ! !

4 réponses

Avatar
Bobe
Roland Matteoli nous a susurré le 20/11/2003 00:39:

Je te donne juste une piste: la fonction addslashes() est ton amie.
lis le manuel (RTFM).
en cadeau je te donne le lien:
http://fr.php.net/manual/fr/function.addslashes.php



Sauf si la directive magic_quotes_gpc est à on dans le fichier de
configuration. (pour des données venant d'un formulaire, d'un cookie ou de l'url)

--
Bobe (Aurélien Maille)
http://webnaute.net

"la vie d'un geek est un combat perpétuel contre l'imperfection"

Avatar
TT.hierry_antisp
Bobe wrote:

Roland Matteoli nous a susurré le 20/11/2003 00:39: > > Je te donne juste
une piste: la fonction addslashes() est ton amie. > lis le manuel (RTFM).
en cadeau je te donne le lien: >
http://fr.php.net/manual/fr/function.addslashes.php >


Sauf si la directive magic_quotes_gpc est à on dans le fichier de
configuration. (pour des données venant d'un formulaire, d'un cookie ou de
l'url)


merci à tous les deux.
-- TThierry


Avatar
Niko
Et "Roland Matteoli" s'exprima en ces termes :

Je te donne juste une piste: la fonction addslashes() est ton amie.


Au pire, si tu ne veux antislasher que les ', tu peux faire un simple :

$str = str_replace("'","'",$str);

Niko

--
Niko
Tarmo en devenir
Enlever nospam- pour me répondre

Avatar
Jean-Marc Molina
Sauf si la directive magic_quotes_gpc est à on dans le fichier de
configuration.


En standard elle est à OFF. Ce qui n'était pas le cas jusqu'à récemment.
Je m'en suis rendu compte en mettant à jour un serveur.

$str = str_replace("'","'",$str);


Le "standard" c'est d'utiliser les fonctions ADDSLASHES et STRIPSLASHES.
Très important. Désormais il te faut le faire manuellement.
Comme règle tu peux décider de faire un ADDSLASHES sur tous les champs de
type TEXTE : nom, prénom, adresse, etc...

Ça restera toujours une histoire de fou ! La faute aux concepteurs de PHP
qui changent les configurations par défaut tout le temps. Surtout pour une
chose pareille qui peut faire planter un projet du jour au lendemain. Et
j'en sais quelque chose :)
JM

--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)