osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Rendre compatible la MS 2.2 avec PHP 5.4
skieur
posté 6 Jan 2014, 11:16
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 7-January 09
Membre no 24145



Bonjour,

j'ai commencé à travailler sur une MS 2.2 pour la rendre compatible avec php5.4 cela deviens urgent.

J'ai fais a peu prés la compatibilité avec 5.3 remplacement des ereg et eregi.

Je m'attaque au problème des textes accentuées qui disparaissent du backoffice à cause des htmlentities qui sont gérées différemment en php5.4.

Ma priorité va au fichier orders.php du backoffice afin que les commentaires des commandes soient affichés.

Est ce que vous avez une idée ou l'avez déjà fait ?

Note je veux bien regrouper les infos sur ce post et en faire un documen ressource pour le passage à PHP5.4.

Merci.


--------------------
osCommerce Online Merchant v2.2 RC1 W3C Valid FR largement modifiée avec quelques codes perso et des contrib telles que mondial relay, editer facture, multi image, seo url, reclamaposteetc ...
Go to the top of the page
 
Bonbec
posté 6 Jan 2014, 11:25
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Pour htmlentities, dans la doc php il est marqué :
Citation
htmlentities() prend un troisième argument optionnel encoding qui définit l'encodage utilisé durant la conversion. Si omis, la valeur par défaut de cet argument est ISO-8859-1 pour les versions antérieures à la version 5.4.0 de PHP, et UTF-8 à partir de la version 5.4.0. Malgré le fait que cet argument soit techniquement optionnel, vous êtes vivement encouragé à spécifier une valeur correcte pour votre code.

As-tu essayé d'ajouter systématiquement ce 3ème argument ?

EDIT : je viens de regarder mon code de ma MS2, htmlentities n'apparaît qu'une seule fois dans admin/includes/functions/general.php et a bien le 3ème paramètre :
Code
function wd_remove_accents($str, $charset='utf-8')
{
    $str = htmlentities($str, ENT_NOQUOTES, $charset);
  ...


Ce message a été modifié par Bonbec - 6 Jan 2014, 12:58.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
skieur
posté 7 Jan 2014, 10:40
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 7-January 09
Membre no 24145



Déjà j'ai vu dans le code de le page orders.php que l'on était en iso8859 il faut commencer par là non ? Je veux dire le passeer en utf8, mais il faut aussi le faire sur la base de donnée ?

Citation
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html dir="ltr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


Ce message a été modifié par skieur - 7 Jan 2014, 11:11.


--------------------
osCommerce Online Merchant v2.2 RC1 W3C Valid FR largement modifiée avec quelques codes perso et des contrib telles que mondial relay, editer facture, multi image, seo url, reclamaposteetc ...
Go to the top of the page
 
Bonbec
posté 7 Jan 2014, 13:18
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Vu qu'à partir d'Osc 2.3 tout passe en UTF-8, effectivement tu as intérêt à passer ton site en UTF-8.
Si tu commences par un fichier, il te faudra TOUT passer en UTF-8 sans BOM : répertoires catalog, admin et BDD.
Les pages regorgent d'include ... Ce n'est pas insurmontable mais c'est un peu long et répétitif.

J'ai passé mon site MS2 en UTF-8 et il est adapté au php 5.3 (pas encore fait le 5.4 vu que je risque de passer en Osc 2.3.3.4 si mes tests continuent à être bons).
Il y a de nombreux fils sur le passage en UTF-8, lis les et si tu as besoin d'aide, tu poses la ou les questions nécessaires que je regarde mes fichiers de ma MS2.

PS : il se peut que la FAQ de ton hébergeur te donne de précieuses infos, comme le mien par exemple.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
skieur
posté 16 Aug 2014, 21:23
Message #5


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 7-January 09
Membre no 24145



Il y a un petit truc que je ne comprend pas

Travaillant sur un serveur avec PHP 5.4 Lorsque l'on exécute orders.php le contenu de la base de donnée accentué est correctement restitué.

lorsque l'on exécute orders.php?page=...=...&action=edit le contenu de la base de donnée qui comporte des accents n'est pas restitué.

Qu'est ce qui est à la base de cette différence de traitement ?

Merci.


--------------------
osCommerce Online Merchant v2.2 RC1 W3C Valid FR largement modifiée avec quelques codes perso et des contrib telles que mondial relay, editer facture, multi image, seo url, reclamaposteetc ...
Go to the top of the page
 
skieur
posté 17 Aug 2014, 15:46
Message #6


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 7-January 09
Membre no 24145



Je me répond à moi même c'est à cause du htmlspecialchars dans admin/includes.functions/general.php en php 5.4 l'encoding est defini par défaut à UTF 8 (tout comme l'avait dit bonbec d'ailleurs unsure.gif )

Comme j'ai pas envie de passer tout le site en UTF 8 voila ce que je vais faire pour rendre compatible ma MS 2.2 avec php 5.4. Je mettrai à jour mon post. C'est pas du codage propre, je ne sais pas si cela vous servira mais cela m'aurait servit de le trouver :

mettre un serveur de dev en mode verbose et remplacer toutes les ereg functions par des preg functionslà où il y a des erreurs tout comme indiqué là :

https://github.com/osCommerce/oscommerce2/c...77ce02480b49ffe

et

https://github.com/osCommerce/oscommerce2/c...93f1de8aa6a6770

fichier

admin/includes.functions/general.php

trouver (function tep_output_string : ligne environ 41 chez moi)

Code
return htmlspecialchars($string);


remplacer par

Code
        return htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');


du coup idem dans general.php coté front office

trouver ( function tep_output_string : ligne 46 environ chez moi)

Code
return htmlspecialchars($string);


remplacer par

Code
        return htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');


fichier admin/includes.functions/database.php

trouver ( function tep_db_output($string) { : ligne 128 environ chez moi)

Code
return htmlspecialchars($string);


remplacer par

Code
        return htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');


fichier admin/categories.php

traiter htmlspecialchars lignes environ 11153, 1159,1160,1161,1162,1163,1164

Ce message a été modifié par skieur - 23 Aug 2014, 22:12.


--------------------
osCommerce Online Merchant v2.2 RC1 W3C Valid FR largement modifiée avec quelques codes perso et des contrib telles que mondial relay, editer facture, multi image, seo url, reclamaposteetc ...
Go to the top of the page
 
Dudule
posté 22 Nov 2014, 17:26
Message #7


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 195
Inscrit : 9-December 02
Lieu : Bordeaux
Membre no 654



Salut,

J'avais le même problème d'affichage que toi dans admin suite au changement d'hébergeur de mon site. Je n'arrive pas à configurer la version de php sur le nouveau hébergeur.

J'avais déjà le site compatible 5.3 (modification des ereg....) et je me suis attaqué au passage en UTF8 :
* toutes les tables et la base complète
* tous les fichiers ouvert et enregistré en UTF8 s'il ne l'étaient pas
* modif du charset dans header
et ça a marché d'une coup simplement en rajoutant les mysql_set_charset('utf8', $$link); dans fonction/database

Je n'ai pas fait de changement dans les trim().... à moins de l'avoir fait au passage en 5.3

Ça semble bien marcher coté boutique publique sans passer à UTF8 (pour plus tard tant qu'à faire).

En tous cas, merci d'avoir soulever le problème qui m'a permis de faire les corrections.

Ce message a été modifié par Dudule - 23 Nov 2014, 02:30.


--------------------
osCommerce Online Merchant v2.2 RC1 W3C Valid FR en prod en PHP5.2.14 chez DRI, En PHP5.3 en local sous Linux
Go to the top of the page
 
nephelion
posté 10 Oct 2015, 17:04
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



bonjour à tous,
Désolé de déterrer ce vieux post,
@skieur disait :
Citation (skieur @ 7 Jan 2014, 05:40) *
Déjà j'ai vu dans le code de le page orders.php que l'on était en iso8859 il faut commencer par là non ? Je veux dire le passeer en utf8, mais il faut aussi le faire sur la base de donnée ?

Citation
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html dir="ltr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">





mais dans la page orders.php chez moi, il y a ça :

Citation
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
-----
</head>


ma question est : où est défini CHARSET ? comme TITLE ou HTML_PARAMS ....
j'ai un trou wink.gif
je retourne les fichiers dans tous les sens

Merci


--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
Bonbec
posté 10 Oct 2015, 22:01
Message #9


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1325
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonsoir,

Cela se trouve dans les fichiers de langue : catalog/includes/languages/french.php par exmple pour la langue française.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc 2.3.4 BS
Go to the top of the page
 
nephelion
posté 11 Oct 2015, 10:00
Message #10


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 96
Inscrit : 1-March 05
Lieu : dans les nuages
Membre no 4971



Bonjour et Merci @Bonbec,

Je m'atèle au passage php5
un peu en retard mais ... wink.gif

je vais sûrement rencontrer des problèmes et je vais revenir vous appeler à l'aide.



--------------------
osCommerce V2.2 RC1 W3C Valid FR V3 | HeadTags_SEO_V_3.2.4 | Ultimate_SEO_URLs_v22d10
Go to the top of the page
 
FEC
posté 30 Sep 2016, 21:28
Message #11


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 30
Inscrit : 5-May 04
Membre no 2416



Citation (skieur @ 7 Jan 2014, 04:40) *
Déjà j'ai vu dans le code de le page orders.php que l'on était en iso8859 il faut commencer par là non ? Je veux dire le passeer en utf8, mais il faut aussi le faire sur la base de donnée ?

Citation
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html dir="ltr" lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">



Bonjour,

Je suis en train de passer à php5.4, tous va bien sauf passage en UTF-8: sous php5.4, il y a des problèmes d’affichage pour lettres accentués, et le symbole € n’affiche pas correctement non plus.

J’ai essaie de regarder mon database :

Code
character_set_database     latin1

Voila mes questions:
1. Est-ce que il faut changer « latin1 » à « utf-8 » ?
2. Comment faire pour changer « latin1 » à « utf-8 » ?
3. Est-ce que il y a d’autre chose à corriger dans database ?
4. Comment faire pour « passer un fichier en UTF-8 sans BOM » ?

Pouvez vous me dire comment faire ? Merci beaucoup pour votre gentille aide.

Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 23rd November 2017 - 06:38
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)