PHP MySQL

cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010 - 12 mars 2010 à 10:36
cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010 - 13 mars 2010 à 15:14
Bonjour à tous.
Je bloque sur un problème lié à 1 mini blog où l'internaute peut laisser son commentaire.

Le souci est que pour certains internautes (une minorité), leur commentaire apparait avec des antislash (\) avant toute guillmet.
Exemple au lieu de : l'avion s'est posé on aura l\'avion s\'posé.
actuellement ma variable est déclaré de la sorte :
$truc = mysql_real_escape_string(stripslashes(htmlspecialchars($_POST['truc']));

Etant donné que le PHP s'execute côté serveur, le résultat devrait être le même pour tout le monde et là ce n'est pas le cas.

Merci à tous ceux qui pourrait m'aider

8 réponses

nasioelduro Messages postés 1 Date d'inscription dimanche 14 février 2010 Statut Membre Dernière intervention 12 mars 2010
12 mars 2010 à 17:10
elduro ok g voi
tu doi fè sa ' J\'ai '.$tableau['AGE_personnel'].' ans ');
echo('
');
sa donn j'ai ans
0
cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010
12 mars 2010 à 17:43
Merci pour ta réponse, mais elle est inappropriée.
Ce n'est pas moi qui écrit les commentaires du mini blog mais des internautes via un textarea.
Le problème vient surement de la déclaration de ma variable pour l'INSERT dans la BDD.
Mais vu que le problème n'est pas effectif depuis mon poste, difficile d'avancer.*
Le pb est simple, pourcertains internautes, l'utilisation d'apostrophe génère un antislash alors que le stripslashes
devrait les ôter pour tout le monde.
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 mars 2010 à 21:17
Salut,

Je ne comprends pas pourquoi tu utilises stripslashes() et htmlspecialchars() ??
Un simple mysql_real_escape_string() doit suffire, non ?
Si ce n'est pas le cas tu devrais jeter un oeil à magic_quote.

Quant au "certains internautes" j'avoue ne pas tout comprendre.

Cordialement,

Kohntark -

@nasioelduro :
Je t'invite à relire le règlement :
http://www.phpcs.com/reglement.aspx

Ici on parle français, pas un dialecte SMS incompréhensible.
0
cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010
13 mars 2010 à 00:25
@kohntark
j'utilise htmlspecialchars afin d'éviter que des internautes utilises des balises html et que surtout elles s'exécute, et
stripslashes sinon par défaut cela affiche dans les commentaires des antislash avant chaque apostrophe.

Quant à "certains internautes", mon problème vient de là. Mon script marche parfaitement et 90% des commentaires s'affichent normalement sauf pour quelques internautes où leur commentaire est agrémenté de \ avant chaque apostrophe.
Et c'est là 1 grand mystère puisque le PHP s'exécutant côté serveur, le résultat devrait être identique pour tout le monde, ce qui n'est pas le cas pour mon mini blog.
Un truc hallucinant.
Exemple moi si je tape dans le textarea : salut l'ami, le commentaire affichera : salut l'ami
mais pour certains internautes lorsque ils taperont dans le textarea : salut l'ami, le commentaire affichera : salut l\'ami

Et je ne comprends pas pourquoi.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
13 mars 2010 à 09:35
Désolé de me répéter :
Si ce n'est pas le cas tu devrais jeter un oeil à magic_quote.

Qu'en est il ?
Tu peux par exemple ajouter ces lignes en début de script :
<?php
echo 'get_magic_quotes_gpc = '.get_magic_quotes_gpc().'

get__magic_quotes_runtime = '.get_magic_quotes_runtime();
die();
?>

Un truc hallucinant

Bizarre en effet, peut être un problème d'encodage.
La chaîne ressemble à quoi dans la base de donnée ?
Quel encodage utilises tu ?
Quelles sont les versions PHP et Mysql utilisées ?
Qu'est ce que ça dit si tu fais des tests en utilisant uniquement mysql_real_escape_string ?
Comment procèdes tu pour l'affichage ?

Cordialement,

Kohntark -
0
cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010
13 mars 2010 à 13:44
@kohntark
Bonjour à toi
J'ai pensé aux magic_quote mais elles sont à proscrire pour PHP 5.3.0 puis PHP 6
J'utilise PHP 5, quant à la version de MySQL c'est du 5 aussi.

Quand j'utilise uniquement mysql_real_escape_string, ca génère des antislash avant chaque guillemet.
Pour l'encodage, c'est de l'UTF 8.
En dans ma BDD, ca reproduit (pour les commentaires où le problème se pose) : par exemple salut l\'ami

je te met le lien de la page concernée : http://www.motoetmotards.com/pages/actualite.php
Tu as des actus et tu accedes donc en cliquant sur lire la suite pour chaque actu et ainsi au module des commentaires.
Là tu ne verras pas de commentaires d'internaute où le problème se pose car j'ai ôté les \ dans la BDD pour les commentaires concernés.

Mais tu pourrais laisser 1 commentaire et voir si pour toi ca génère des \ avant chaque guillemet.

Cordialement
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
13 mars 2010 à 15:03
J'ai pensé aux magic_quote mais elles sont à proscrire pour PHP 5.3.0 puis PHP 6

Oui, ... d'où ma question, ... sans réponse

Faute d'avoir des dons de voyance je rerépète donc :
Désolé de me répéter :

Si ce n'est pas le cas tu devrais jeter un oeil à magic_quote.


Qu'en est il ?
Tu peux par exemple ajouter ces lignes en début de script :
<?php
echo 'get_magic_quotes_gpc = '.get_magic_quotes_gpc().'

get__magic_quotes_runtime = '.get_magic_quotes_runtime();
die();
?>


L'activation de magic quote pourrait expliquer ton soucis.
Lever ce doute serait une bonne idée.

c'est de l'UTF 8

Attention, l'encodage par défaut de htmlspecialchars() est l'ISO-8859, il te faut renseigner le troisième paramètre pour éviter tout pb (cf doc)

Je re :
Comment procèdes tu pour l'affichage ?


Je ne manquerai pas de faire un tour sur le lien (pas le temps maintenant) mais je ne voudrais pas polluer tes commentaires.

Cordialement,

Kohntark -
0
cs_karim88 Messages postés 10 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 13 mars 2010
13 mars 2010 à 15:14
@kohntark

Merci pour tous tes renseignements.
Je vais me pencher tout de même sur les magic_quotes et faire de nouveaux essais.
j'ai ajouté ce morceau de code en debute de page
<?php
echo 'get_magic_quotes_gpc = '.get_magic_quotes_gpc().'

get__magic_quotes_runtime = '.get_magic_quotes_runtime();
die();
?>
le résulat : une page blanche avec :
get_magic_quotes_gpc = 0
get__magic_quotes_runtime = 0

A bientôt
0