OVH Cloud OVH Cloud

La methode POST et les quotes.

8 réponses
Avatar
maxx
Salut,

Je recontre un problème avec les quotes et la methode POST. A partir
d'une base MySQL, je recupere un champs via mysql_fetch_array et
lorsque j'affiche, le resultat est affiché sans souci avec les quotes.
Mais lorsque je le passe dans une methode POST, il coupe tous les
caracteres après la quote (exemple : l'herbe =>l').
J'ai recherché sur le net mais je comprend pas les causes et comment
faire pour eviter ce problème..? De plus, les methodes magic_quote
sont decrites comme dangereuse losqu'on les utilises.

Est ce que quelqu'un peu indiquer comment faire? Existe t il d'autre
methode pour palier à ce problème?

Merci d'avance

8 réponses

Avatar
Guillaume Bouchard
maxx wrote:
Salut,


Salut.

Je recontre un problème avec les quotes et la methode POST. A partir
d'une base MySQL, je recupere un champs via mysql_fetch_array et
lorsque j'affiche, le resultat est affiché sans souci avec les quotes.


Montre ton code html d'affichage, montre ton code php. Bref soit plus
précit (bien que j'ai une vague idee de ton problème.

--
Guillaume.

Avatar
Paul Delannoy
maxx a écrit:
Salut,

...>

Est ce que quelqu'un peu indiquer comment faire? Existe t il d'autre
methode pour palier à ce problème?


Regardes du cote de mysql_escape_string()
J'eqça

Merci d'avance


de rien

Avatar
P'tit Marcel
maxx wrote:
Je recontre un problème avec les quotes et la methode POST. A partir
d'une base MySQL, je recupere un champs via mysql_fetch_array et
lorsque j'affiche, le resultat est affiché sans souci avec les quotes.
Mais lorsque je le passe dans une methode POST, il coupe tous les
caracteres après la quote (exemple : l'herbe =>l').


dans ton formulaire, tu ne devrais pas définir tes champs comme ça
<input type='hidden' name='lechamp' value='<?php echo $valeursmysql;?>'>

si tu veux faire quick & dirty, code plutôt :
<input type="hidden" name="lechamp" value="<?php echo $valeursmysql;?>">

je laisse les stakhanovistes des guillemets, genre Guillaume 10.85,
proposer une approche plus rigoureuse...

a+
--
P'tit Marcel
stats sur les forums modérés http://www.centrale-lyon.org/ng/coc/coc3.gif

Avatar
Guillaume Bouchard
P'tit Marcel wrote:
dans ton formulaire, tu ne devrais pas définir tes champs comme ça
<input type='hidden' name='lechamp' value='<?php echo $valeursmysql;?>'>

si tu veux faire quick & dirty, code plutôt :
<input type="hidden" name="lechamp" value="<?php echo $valeursmysql;?>">


Notes que hormis les guillemets, je ne vois pas trop la nuance quick &
dirty...

Le problème viens aussi du fait que pour tous champs de formulaires (et
affichage de html en general) il faut utiliser htmlspecialchars(). Mais
la question était telement precise que j'attendrais des précision avant
de conclure définitivement...

je laisse les stakhanovistes des guillemets, genre Guillaume 10.85,
proposer une approche plus rigoureuse...


Tu me cherches là ? :)

--
Guillaume.
10.79, Saloperie de thermo !

Avatar
maxx
Alors, je fais la requete SQL de cette maniere :
while $row=mysq_fetch_array($query,MYSQL_ASSOC) ou $query est ma
requete.
{
$res[]=$row["nom_de_mon_champ"]
}
return $res

Ensuite, je recupere les données dans un select (formulaire). Sur
l'affichage du formulaire tout est bien affiché (par exemple : 15 de
l'Erdre).

Mais lorsque je fais "envoyer" avec mon formulaire avec la methode
"POST", je n'ai que "15 de l". Apres la quote, je n'ai plus rien.
Pour verifier, j'ai un print_r ($_POST) et toutes les valeurs avec une
quote ont le meme problème.
Avatar
Guillaume Bouchard
maxx wrote:
Alors, je fais la requete SQL de cette maniere :

while $row=mysq_fetch_array($query,MYSQL_ASSOC) ou $query est ma
requete.


$row = mysql_fetch_assoc ne convient pas tout autant ? :)

{
$res[]=$row["nom_de_mon_champ"]
}
return $res


J'ai pas tout compris. Tu ne veux recuperer qu'un tableau contenant
qu'un seul champs ?

Alors pourquoi ne pas le faire directement dans le SELECT

$sql = "SELECT nom_de_mon_champ FROM ...";


Ensuite, je recupere les données dans un select (formulaire). Sur
l'affichage du formulaire tout est bien affiché (par exemple : 15 de
l'Erdre).


Tu peux me dire COMMENT tu affiches ce formulaire ?

Mais lorsque je fais "envoyer" avec mon formulaire avec la methode
"POST", je n'ai que "15 de l". Apres la quote, je n'ai plus rien.
Pour verifier, j'ai un print_r ($_POST) et toutes les valeurs avec une
quote ont le meme problème.


Oki, montre moi comment tu affiches le formulaire.

--
Guillaume.

Avatar
Choub
Le problème vient du fait que tu ne formatte pas tes valeurs.
Il faut échapper les caractères spéciaux, tu peux soit les
transformer en caractères HTML avec htmlentities() et
html_entity_decode(), soit échapper directement les caractères avec
addslashes().

Attention à ne jamais enregistrer des données brut qui viennent d'un
formulaire HTML dans une base. Il faut toujours formater ton texte
suivant les besoins, généralement j'utilise htmlentities() pour
l'enregistrement et html_entity_decode() pour l'affichage.

Salutation.
Avatar
maxx
C'etait bien ça! en fait lors de la génération en code html, les
quotes qui entouré le code HTML se confondé avec les valeurs
contenant une quote.
Exemple : "<input type='text' value='l'herbe'>"

Merci