Admin Messages Gestion Éditer : Corps message non vu

Vos idées et demandes pour la prochaine mise à jour du script sont les bienvenues ici - Your ideas and suggestions for the next update.

Modérateurs : boulmontjj, Pierre G., Malabar, Otomatic

Otomatic
Modérateur
Modérateur
Messages : 738
Inscription : Ven 11 Août 2006, 09:33
Localisation : Paris
Contact :

Admin Messages Gestion Éditer : Corps message non vu

Messagepar Otomatic » Mar 25 Juin 2013, 17:55

Bonjour,

En essayant différents « trucs » en local sur @lex Guestbook, voila t'il pas que Administration, Messages, Gestion, Éditer un message ne me montre plus le corps du message, le textarea est vide alors que Gestion et Répondre montrent bien le corps du message.
Je me dis que cela provient de « mes modifs » et, par acquit de conscience, je supprime tout mon livre d'or actuel et installe une version 5.0.4, vierge de toute modification et bien, bernique, c'est kif-kif, pas de visualisation du corps du message quand on veut l'éditer.

Je vous passe les détails et surtout le temps de recherche...

Wampserver permet de basculer « à la volée » d'une version de PHP à une autre sans même quitter la page visualisée. Avec ma configuration locale, je peux essayer toutes les combinaisons possibles entre :
- Apache 2.2.24 ou Apache 2.4.4
- PHP 5.3.26 ou 5.4.16 ou 5.5.0
- MySQL 5.5.32 ou 5.6.12

Avec PHP 5.3.26, aucun problème sur @lex Guestbook, le corps du message est bien vu en édition.

Avec PHP 5.4.16 ou 5.5.0, le corps du message n'est pas vu.
Je ne m'en était pas rendu compte jusqu'à présent puisque je n'éditais des messages QUE chez l'hébergeur Free et que leur version de PHP date quelque peu : 5.1.3 mais, depuis que j'ai transféré mon site chez Gandi, il tourne sous PHP 5.4.14 et le problème est le même.

Je cherche le « pourquoi du comment » et si vous aviez quelques idées, elles seraient les bienvenues.
Ce n'est pas par ce que l'erreur se propage qu'elle devient vérité. Gandhi

Malabar
Admin
Admin
Messages : 4071
Inscription : Lun 07 Août 2006, 09:46
Localisation : Lorient
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Malabar » Mer 26 Juin 2013, 12:38

En 5.4.4 je n'ai pas le problème chez moi...
J'essayerai en 5.5
Le mâle à barre (Maxime)

Otomatic
Modérateur
Modérateur
Messages : 738
Inscription : Ven 11 Août 2006, 09:33
Localisation : Paris
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Otomatic » Mer 26 Juin 2013, 19:48

Bonsoir,

Je pense avoir trouvé et ça dépend du contenu du message. Pas le temps de creuser plus profond pour ce soir, mais regarde l'évolution de htmlspecialchars() à partir de PHP 5.4.0 :
encoding
Encodage à utiliser lors de la conversion. Si omis, la valeur par défaut de cet argument sera ISO-8859-1 dans les versions antérieures à PHP 5.4.0, et UTF-8 à partir de la version PHP 5.4.0.
Ce n'est pas par ce que l'erreur se propage qu'elle devient vérité. Gandhi

Otomatic
Modérateur
Modérateur
Messages : 738
Inscription : Ven 11 Août 2006, 09:33
Localisation : Paris
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Otomatic » Jeu 27 Juin 2013, 11:13

Bonjour,

Après investigations poussées, le problème est bien dans les différences des valeurs par défaut de la fonction htmlspecialchars() à partir de PHP 5.4.0
Soit un corps de message de départ :
un grand merci pour votre site !
magnifique et passionnant !

Pourquoi celui-là ? Parce que je le vois dans le textarea d'édition de message, alors que la quasi totalité des autres ne sont pas vus.
Donc, j'édite ce message, plusieurs fois de suite :

un grand merci pour votre site !
magnifique et passionnant !

- edit 1 : J'ajoute du texte sans accent, juste de l'ASCII pur.
- edit 2 : Toujours du texte uniquement ASCII qui fait partie, sans aucune modification, du jeu utf-8
- edit 3 : Je vois toujours le corps du message dans le textarea de modification.

Et puis une dernière fois

un grand merci pour votre site !
magnifique et passionnant !

- edit 1 : J'ajoute du texte sans accent, juste de l'ASCII pur.
- edit 2 : Toujours du texte uniquement ASCII qui fait partie, sans aucune modification, du jeu utf-8
- edit 3 : Je vois toujours le corps du message dans le textarea de modification.
- edit 4 : J'ajoute maintenant un seul caractère avec accent qui est ISO-8859-1, mais ne fait pas partie du jeu utf-8.

Avec le seul caractère accentué (è de caractère), le message n'est plus vu dans le textarea.
Décortiquons un peu plus avant le fonctionnement de la fonction htmlspecialchars() pour laquelle il est dit :
Comme déjà précisé dans mon message précédent :
encoding
Encodage à utiliser lors de la conversion. Si omis, la valeur par défaut de cet argument sera ISO-8859-1 dans les versions antérieures à PHP 5.4.0, et UTF-8 à partir de la version PHP 5.4.0.

et :
Si la chaîne d'entrée string contient une séquence de code invalide dans le paramètre encoding fourni, une chaîne vide sera retournée.
Et, c'est bien le cas puisque la chaîne contient un "è" en iso-8859-1 alors que le paramètre encoding est utf-8 par défaut. En présence de tout caractère non valide utf-8, la fonction retournera une chaîne vide, donc rien dans le textarea de la fenêtre d'édition.

Modifions l'appel à htmlspecialchars() pour le remettre aux valeurs par défaut d'avant PHP 5.4.0, donc, dans le fichier admin/modif_mess.php
remplaçons

Code : Tout sélectionner

$echo_html -> MxText("value_message", htmlspecialchars($alex_livre_messages_message[1]));

par

Code : Tout sélectionner

$echo_html -> MxText("value_message", htmlspecialchars($alex_livre_messages_message[1], ENT_COMPAT | ENT_HTML401, 'ISO-8859-1'));

et voilou, plus de problème, tous les messages sont bien vus dans la fenêtre d'édition.
Remarque importante : La modification précédente a été effectuée uniquement pour les essais. Ne pas la faire dans vos fichiers.

Maintenant, le problème qui se pose est :
- Comment intégrer cette modification dans @lex Guestbook, sachant qu'il y a d'autres appels à htmlspecialchars() pour d'autres chaînes qui pourraient contenir des caractères hors utf-8 comme $alex_livre_messages_nom ou $alex_livre_messages_ville_pays.
Modifier tous les appels à htmlspecialchars() serait très fastidieux et difficilement automatisable ; il y a 39 appels à htmlspecialchars() dans 9 fichiers et aucun ne comprend les paramètres supplémentaires $flags et $encoding.
Je préconise de créer un nouvelle fonction dans include/funct_utiles.php, par exemple alex_htmlspecialchars(...) (Voir ci-dessous, car il faut effectuer le remplacement global AVANT de créer la fonction) :
- Effectuer un remplacement global dans tous les fichiers du livre d'or de
htlmspecialchars(
par
alex_htmlspecialchars(
Chez moi, 39 remplacements dans 9 fichiers en moins de 2 secondes.

Ajouter la fonction dans include/funct_utiles.php

Code : Tout sélectionner

//Function pour tenir compte du remplacement de ISO-8859-1 par UTF-8
//dans les valeurs par défaut de htmlspecialchars() à partir de PHP 5.4.0
function alex_htmlspecialchars($chaine)
{
   return htmlspecialchars($chaine, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
}
Ce n'est pas par ce que l'erreur se propage qu'elle devient vérité. Gandhi

Jean-Pierre
Messages : 216
Inscription : Mer 09 Août 2006, 10:19
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Jean-Pierre » Ven 10 Oct 2014, 21:35

Bonsoir,

Merci Oto, tu m'as permis de réduire les erreurs PHP à néant :super:

Petites précisions pour aider les autres qui vont se frotter à cette épreuve ; tu disais :

...
- Effectuer un remplacement global dans tous les fichiers du livre d'or de
htlmspecialchars(
par
alex_htmlspecialchars(
Chez moi, 39 remplacements dans 9 fichiers en moins de 2 secondes.


Global oui mais en ouvrant les yeux, car dans le fichier "./admin/modif_mess.php" faut pas effectuer de remplacement global si l'on a effectué une modif "ENT ... 'ISO-8859-1'));"vers la fin de cette ligne.

Idem dans le fichier "./include/funct_utiles.php" faut rien modifier dans la fonction ajoutée "alex-htmlspecialchars()".

Chez moi j'ai compté et remplacé 38 occurrences détaillées ci-dessous :
--------------------------------------------------
./index.php = 8 remplacements
./add_messages.php = 2 remplacements
--------------------------------------------------
./admin/add_admin.php = 1 remplacement
./admin/boite_java.php = 7 remplacements
./admin/modif_mess.php = 5 occurrences mais 4 remplacements (voir dito)
./admin/repondre.php = 4 remplacements
./admin/skins.php = 7 remplacements
--------------------------------------------------
./include/funct_utiles.php : 6 occurrences mais 3 remplacements (voir dito)
--------------------------------------------------
./boiteJava/index.php = 2 remplacements
--------------------------------------------------
Ce qui me donne 38 remplacements dans 9 fichiers

Merci de rectifier si j'ai loupé une marche ou lâché une coquille.

Ceci dit, n'étant pas un expert du remplacement à la volée ; j'ai mis des dizaines de fois 2 secondes pour faire tout ça :hehe:

Encore merci Oto :merci:
Dernière édition par Jean-Pierre le Sam 11 Oct 2014, 12:06, édité 1 fois.

Otomatic
Modérateur
Modérateur
Messages : 738
Inscription : Ven 11 Août 2006, 09:33
Localisation : Paris
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Otomatic » Sam 11 Oct 2014, 09:37

Jean-Pierre a écrit :Global oui mais en ouvrant les yeux, car dans le fichier "./admin/modif_mess.php" faut pas effectuer de remplacement global si l'on a effectué une modif "ENT ... 'ISO-8859-1'));"vers la fin de cette ligne.

Bonjour,

Bien vu ! J'ai simplement oublié de préciser que cette modification était simplement pour effectuer des essais et que j'étais revenu aux fichiers originels avant d'effectuer le remplacement global.
Jean-Pierre a écrit :Ceci dit, n'étant pas un expert du remplacement à la volée ; j'ai mis des dizaines de fois 2 secondes pour faire tout ça

Depuis des lustres, j'utilise l'éditeur de textes UltraEdit qui permet des remplacements multicritères dans plusieurs fichiers et qui permet même d'écrire des scripts.
Néanmoins, Notepad++, libre et gratuit, le permet aussi, certes avec moins de possibilités, mais largement suffisant dans ce cas.
Ce n'est pas par ce que l'erreur se propage qu'elle devient vérité. Gandhi

vincent3569
Messages : 15
Inscription : Mar 15 Nov 2011, 14:09

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar vincent3569 » Lun 29 Juin 2015, 11:54

bonjour

les indications sur ce qu'il faut modifier ou pas ne sont pas hyper claires (en particulier sur le fichier modif_mess.php)
en l'occurrence, j'ai modifié tous les fichiers manuellement, sauf le contenu de la nouvelle fonction ajoutée (c'est trivial à dire, mais un remplacement en masse est aveugle, et remplace le contenu de la fonction alex_...) et agb ne fonctionne plus : j'ai une page blanche lorsque je consulte mon livre d'or.

lanner
Messages : 4
Inscription : Dim 20 Avr 2014, 11:56

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar lanner » Mer 12 Août 2015, 15:34

Bonjour,
Je viens de faire le test avec les modifications, je n'ai pas rencontré de soucis pour le moment, je vais faire quelques tests supplémentaires pour voir

Malabar
Admin
Admin
Messages : 4071
Inscription : Lun 07 Août 2006, 09:46
Localisation : Lorient
Contact :

Re: Admin Messages Gestion Éditer : Corps message non vu

Messagepar Malabar » Ven 14 Août 2015, 18:50

lanner a écrit :Bonjour,
Je viens de faire le test avec les modifications, je n'ai pas rencontré de soucis pour le moment

:pompom:
Le mâle à barre (Maxime)


Revenir vers « Suggestions d'amélioration du script »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités