Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

Messages: 3694

Enregistré le: 6 Jan 2006

Message le Ven Mai 24, 2013 16:51

Bonjour,

Je suis un peu perdu là, j'aurai besoin de vos lumières parce qu'à force d'être dessus, je ne vois plus... 8O

Voilà, je viens de faire la migration d'un site d'un serveur dédié DEBIAN squeeze 6.0 vers un serveur DEBIAN WHEEZY 7.0.
Je ne comprends pas car j'ai vraiment essayé de garder les mêmes caractéristiques du serveur MYSQL et PHPMYADMIN pour que la migration se passe bien mais pas au moment de tester le site en ajoutant un article :(

En faite, dès l'instant que je vais mettre un mot avec accent, le champ de ma table restera vide.

Voici mes caractéristiques:
1/ Ma config apache ancienne et nouvelle est en : iso-8859-1
2/ mes pages sont (meta http-equiv="content-type" content="text/html; charset=iso-8859-1")
3/ la fonction que j'utilise avant de faire un ajout en base de données:
Code: Tout sélectionner
<?php
public function textLibre($element){
   $element1 = htmlentities ($element, ENT_QUOTES);
   $element2 = stripslashes($element1);
   $element2 = trim($element2);
   return $element2;
}
}
?>

4/ En suite, pour ma table : le moteur (MyISAM) et le charset : (latin1_swedish_ci)

PS1 : je précise qu'avant la migration et depuis plusieurs années, cela a toujours marché et c'est uniquement depuis cette migration.
PS2 : en faite, mon insertion se passe bien tant que je ne mets pas de mots avec accent.
Haut
9 Réponses
Messages: 8554

Enregistré le: 14 Mai 2003

Message le Ven Mai 24, 2013 16:55

Encore cette légende urbaine d'enregistrer les entités HTML dans la DB (htmlentities lors du save => FAIL)...
Et si tu copies/colles ta query générée dans ton client MySQL préféré, ça donne ?
Haut
Messages: 3694

Enregistré le: 6 Jan 2006

Message le Ven Mai 24, 2013 17:30

Merci de ta réponse :)

Bah en faite, j'ai créé volontairement une erreur dans mon script PHP pour qu'elle puisse me générer une erreur visible, justement pour voir quelle type de requête, je m'apprête à faire et bah... c'est là, que je ne pige pas... 8O

Si je mets exemple : [bonjour] => ça passe. Maintenant si je mets : [as-tu été à l'école?] ==> ma variable POST sera vide??!!

Donc cela vient obligatoirement de ma fonction mais pourquoi??
Je ne fais rien extraordinaire?
Cela a toujours fonctionné?!

Est-ce un module spécifique qui n'est pas activé sur apache2?
J'ai l'impression, c'est une histoire de caractères spéciaux mais traités PHP pas MYSQL puisque c'est ma variable POST qui ne récupère pas les données!
Merci
Haut
Messages: 8554

Enregistré le: 14 Mai 2003

Message le Ven Mai 24, 2013 17:44

Et tu peux nous montrer le code PHP d'insertion ? Afin de s'assurer de voir que tu échappes les données (mysql_real_escape_string() ou autre) ?
Si ça tombe c'est juste ça, parce que par exemple avant tu avais les magic_quotes activées.

Edit: ah carrément dans la variable $_POST ?
Haut
Messages: 3694

Enregistré le: 6 Jan 2006

Message le Ven Mai 24, 2013 17:54

lol oui... c'est ma variable POST qui ne récupère pas mes données issues de mon formulaire dès l'instant que je vais mettre des caractères spéciaux.

J'ai créé une erreur dans mon script PHP pour qu'elle puisse me générer visuellement le type de requête que je m'apprête à faire.
C'est là que je me suis aperçu que si je mets de simple mot sans accent, sans caractères spéciaux => ma variable concernée est ok mais sinon, la variable est vide??!!

Je ne comprends pas en quoi ma fonction puisse merder?! :?
Est-ce un module à activer dans apache2?
Est-ce que cela vient de WHEEZY?
Comprends pas??!!

C'est vraiment une migration, je n'ai pas touché au code source!
Haut
Messages: 8554

Enregistré le: 14 Mai 2003

Message le Ven Mai 24, 2013 18:29

Et dans Firebug ou le débogueur de Chrome, tu peux tout analyser, le request à l'air correct?
Haut
Messages: 3694

Enregistré le: 6 Jan 2006

Message le Ven Mai 24, 2013 19:11

Merci de ton aide :oops:

Franchement, j'y comprends rien??!
J'ai analysé mon php.ini si cela venait de là mais j'ai rien vu de particulier :(

Avec firebug, il me précise bien les données issues de mon formulaire en POST, je te mets ce qui pourrait aider:
Pour infos:
Code: Tout sélectionner
Content-Type   text/html; charset=iso-8859-1
Date   Fri, 24 May 2013 16:53:50 GMT
Expires   Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive   timeout=5, max=100
Pragma   no-cache
Server   Apache/2.2.22 (Debian)
Vary   Accept-Encoding
X-Powered-By   PHP/5.4.4-14


Maintenant, ce que me donne firebug:
J'ai bien toutes mes données puisqu'il me précise [requiredD ==> c'est école].
Le champ de mon formulaire "requiredD" passe bien mes données avec caractères spéciaux.
Mais un simple:
Code: Tout sélectionner
<?php
echo $_POST['requiredD'];
?>

Affiche mes données avec ou sans caractères spéciaux!

Maintenant, si j'utilise "htmlentities()", cela ne me renvoi plus rien !

J'en déduis (je pense) qu'il y a un module ou une info qui ne doit pas être chargée sur apache ou php parce que là, c'est carrément une fonction de base qui n'a pas l'air d'être reconnue => "htmlentities()"

Non?!
Haut
Messages: 8554

Enregistré le: 14 Mai 2003

Message le Ven Mai 24, 2013 20:06

Je ne vois pas non plus comme ça, c'est bizarre :?
Haut
Messages: 3694

Enregistré le: 6 Jan 2006

Message le Sam Mai 25, 2013 10:05

Bon... mon problème avance...
En faite, dans la doc PHP, l'encodage utilisé par php pour htmlentities est ISO-8859-1 pour les versions anterieur à PHP 5.4.0 et UTF-8 a partir de PHP 5.4.0.

Donc la raison, je l'ai trouvé.

La solution bourrin serait de rajouter une instruction dans mon htmlentities() de la sorte:
Code: Tout sélectionner
htmlentities($mavariable, ENT_QUOTES, 'iso-8859-1');

J'ai testé, ça marche !

Mais je préfèrerai choisir une méthode plus propre parce que je n'ai pas envie de passer sur tout mon code. Alors, j'ai modifié mon php.ini pour lui mettre:
; PHP's default character set is set to empty.
; http://php.net/default-charset
default_charset = "ISO-8859-1"


J'ai redémarré apache mais toujours le même problème?!
Haut
Messages: 2

Enregistré le: 30 Aoû 2012

Message le Sam Juin 17, 2017 13:29

Bonjour

j'ai le meme soucis, que j'avais solutionné une fois, c'est bien dans la config serveur pas la peine de tout reecrire ..
je me souviens plus, est ce que tu as trouvé ?
Haut

Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.