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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> comment passer une version 2.2MS2 PHP4 en PHP5.4, concretement que faut il faire ????
laurentgo
posté 1 Apr 2015, 09:51
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 142
Inscrit : 20-September 08
Lieu : vaucluse
Membre no 23023



Bonjour à tous !!!

OVH me signal qu'à ce jour les sites en PHP4 doivent migrer en PHP5.4 blink.gif

Mon site étant une version 2.2MS2 en PHP4, il faut que j'y passe.

Mais concrètement que dois je faire ????

Merci d'avance je pense que cela va servir à beaucoup.....












--------------------
os commerce 2.2ms2

Go to the top of the page
 
Bonbec
posté 1 Apr 2015, 20:12
Message #2


Ceinture marron OSC
Icône de groupe

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



Bonjour,

Il y a déjà plusieurs fils sur le sujet :
http://www.oscommerce-fr.info/forum/index....showtopic=68265
http://www.oscommerce-fr.info/forum/index....showtopic=71065
http://www.oscommerce-fr.info/forum/index....showtopic=70597
et sûrement d'autres ...

Voilà aussi un lien pour les fichiers et modifs à faire pour les ereg eregi.

Fais les modifs en local d'abord pour tester.
Si tu coinces quelque part, n'hésite pas à expliquer ce que tu as fait et ce qui te coince wink.gif blush.gif


--------------------
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
 
laurentgo
posté 2 Apr 2015, 08:46
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 142
Inscrit : 20-September 08
Lieu : vaucluse
Membre no 23023



Merci Bonbec

je vais m'y atteler....









--------------------
os commerce 2.2ms2

Go to the top of the page
 
laurentgo
posté 2 Apr 2015, 09:11
Message #4


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 142
Inscrit : 20-September 08
Lieu : vaucluse
Membre no 23023



je ne me rappelle plus ou je dois chercher pour savoir si je suis en UTF8.....


--------------------
os commerce 2.2ms2

Go to the top of the page
 
Bonbec
posté 2 Apr 2015, 09:22
Message #5


Ceinture marron OSC
Icône de groupe

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



Re,

Est-ce que tu as Notepad++ ? C'est un freeware très pratique.
Si oui, tu regardes un de tes fichiers.
Dans le menu horizontal de Notepad++ tu as "encodage", tu cliques dessus et si tu as "Enoder en UTF-8 (sans BOM)" c'est que tu es en UTF-8 pour tes fichiers.


--------------------
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
 
fabbea
posté 15 Apr 2015, 17:08
Message #6


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-November 07
Membre no 19732



Bonjour

un autre lien ici : http://addons.oscommerce.com/info/7394
Si ça peut servir...

Cordialement
Go to the top of the page
 
Havock
posté 16 Apr 2015, 08:33
Message #7


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



OVH doit aussi faire des maj de MYSQL.

Quelqu'un sait si passer de mysql 5.0 a 5.5 implique de modifier du code ?


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
SaphyraK
posté 29 Apr 2015, 18:19
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Hello, étant donné que je suis aussi concerné par la décision de migration de OVH vers PHP 5.4, le sujet que je vais énoncer est intrinsèquement lié avec la question du topic, et pourrait aussi apporter des éléments de réponses à laurentgo, créér un autre sujet serait je pense superflu.
(si jamais je dois quand même créer un autre sujet, n'hésitez pas à me le signaler).

Donc, voilà.

J'ai remarqué que les sessions étaient complètement bousillées par PHP 5.4 (si l'on utilise le code base du fichier /includes/functions/sessions.php)

Ainsi, j'ai fais un mix du fichier de la MS2.3.4 (master version en fait) avec la MS2.2 (sur laquelle je dois travailler pour la rendre compatible avec PHP 5.4), et pas mal de tests poussés.

Et ça fonctionne.

Seulement, voilà, il y a un truc que je n'explique pas vraiment...

Dans le code de tep_get_tax_rates()
** fichier: /includes/functions/general.php
J'ai ça à un endroit:
Code
$country_id = $customer_country_id;
  $zone_id = $customer_zone_id;


Et si je laisse ça tel quel (c'est le code par défaut), en faisant un echo de $country_id ou de $zone_id, je m'aperçois que cela retourne: 0..

Citation
Je précises quand même que dans la page: login.php
Si je fais un echo de $customer_country_id ou de $customer_zone_id, cela me retourne bien la valeur attendue..
Ce n'est QUE dans la fonction où l'on s'en sert comme "global" que ça semble être vide (car sûrement introuvable, mais pourquoi?)



TOUTEFOIS..

Si.. je modifies comme suit:
Code
$country_id = $_SESSION['customer_country_id'];
  $zone_id = $_SESSION['customer_zone_id'];


Et bien les taxes sont bien ajoutées car $country_id et $zone_id récupères bien les données censées êtres dans la session PHP actuellement créée et lue..

Des idées pourquoi moi je suis obligé de procéder comme cela (il me semble être le seul à procéder comme cela..)

Autrement...
Vous procédez comment vous ?

Merci de vos retours.


@Havock
Où avez-vous vu que OVH met aussi à jour MySQL (je ne dis pas que vous avez tort hein, je veux juste en savoir plus!!). Merci.


@laurentgo
ET pour vous,
Voici le lien vers la version 2.3.4 (master version) de sessions.php:
https://github.com/osCommerce/oscommerce2/b...ns/sessions.php

Les sessions ne fonctionneront pas si vous ne faites pas les mises à jours nécessaires du fichier sessions.php..
Un conseil, faites les. (et installez vous un serveur de test avec le mode display_errors = true, et aussi le error_reporting complet !
Voilà..

lastEdited(29/04/2015)

Ce message a été modifié par SaphyraK - 29 Apr 2015, 18:55.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Bonbec
posté 29 Apr 2015, 19:50
Message #9


Ceinture marron OSC
Icône de groupe

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



Bonjour,
Merci pour le détail.
Pour les sessions, c'est exact, voir ici happy.gif


--------------------
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
 
SaphyraK
posté 30 Apr 2015, 14:17
Message #10


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Bonjour Bonbec,

Merci du remerciement, mais ça ne réponds pas spécialement à ma question.. :/


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Bonbec
posté 30 Apr 2015, 14:44
Message #11


Ceinture marron OSC
Icône de groupe

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



Re,

Comme je n'ai pas ce problème, je ne m'étais pas penché dessus vu que je suis occupé à passer ma MS2.2 en responsive design.
Je viens de relire plus en détail ton post et ceci me fait tiquer :
Citation
J'ai remarqué que les sessions étaient complètement bousillées par PHP 5.4 (si l'on utilise le code base du fichier /includes/functions/sessions.php)
Ainsi, j'ai fais un mix du fichier de la MS2.3.4 (master version en fait) avec la MS2.2

Je n'ai pas fait de mix, j'ai carrément remplacé les fichiers sessions.php, je n'ai pas fait de "mix".


--------------------
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
 
Havock
posté 4 May 2015, 14:16
Message #12


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Bonjour SaphyraK,

Je pense qu'il est utile de garder tout ce qui concerne la migration en PHP 5.4 sur ce même sujet (ça évitera de chercher).

Pour mysql 5.5 c'est OVH qui me l'a dit. En fait j'ai un serveur chez eux mais infogéré par eux. Il tourne avec mysql 5.0 qui ne sera bientôt plus supportée. Ils m'ont donc contacté pour passer sur une version plus récente comme la 5.5 smile.gif Je vais donc faire à la fois PHP 5.4 et mysql 5.5.


Comme Bonbec j'ai récupéré le fichier des sessions de la 2.3.4 et cela semble marcher. J'ai juste modifié la fonction _sess_write pour gérer le temps maximum de session visiteur.

Code
function _sess_write($key, $value) {
        $v_expiry = time() + 3600; // On fixe une durée d'une heure pour la session
        $check_query = tep_db_query("select 1 from " . TABLE_SESSIONS . " where sesskey = '" . tep_db_input($key) . "'");
        if ( tep_db_num_rows($check_query) > 0 ) {
            return tep_db_query("update " . TABLE_SESSIONS . " set expiry = '" . tep_db_input($v_expiry) . "', value = '" . tep_db_input($value) . "' where sesskey = '" . tep_db_input($key) . "'");
        } else {
            return tep_db_query("insert into " . TABLE_SESSIONS . " values ('" . tep_db_input($key) . "', '" . tep_db_input($v_expiry) . "', '" . tep_db_input($value) . "')");
        }
    }


Pour ta question liée à tep_get_tax_rates : le $customer_zone_id égal a zéro est normal si tu ne définis pas de région mais uniquement le pays de ton client.
$customer_country_id est récupérée directement à partir de la variable de session $_SESSION['customer_country_id'] donc normalement tu ne devrais pas avoir de différence entre :

Code
$country_id = $customer_country_id;


et

Code
$country_id = $_SESSION['customer_country_id'];


Par contre le code que tu cites est :

Code
if (!tep_session_is_registered('customer_id')) {
            $country_id = STORE_COUNTRY;
            $zone_id = STORE_ZONE;
        } else {
            $country_id = $customer_country_id;
            $zone_id = $customer_zone_id;
        }


Tu as vérifié la valeur de $_SESSION['customer_id'] ?

Sinon as tu fait un echo de $country_id et à coté un echo de $customer_country_id ?

Ce message a été modifié par Havock - 4 May 2015, 14:17.


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
SaphyraK
posté 5 May 2015, 22:07
Message #13


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Merci Havock, bon, je vais regarder tout ça plus en détail demain et t'en reparler.

Vous avez donc remplacé complètement le fichier pas fait de mix.. hum.. Intéressant..

Merci, je tenterai ça alors.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
SaphyraK
posté 8 May 2015, 00:28
Message #14


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Bon, alors, même en utilisant directement le même fichier de:

includes/functions/sessions.php de OSCOMMERCE 2.3.4, j'ai le même souci avec $customer_*

Je ne sais pas ce qu'il se passe, aucuns messages d'erreurs, même dans le log Apache, comment je suis supposé comprendre le problème sans erreurs ?

C'est frustrant.

Avez vous aussi utilisé directement le fichier :

includes/classes/sessions.php de OSCOMMERCE 2.3.4 ou pas ?


@Havock: Concernant tes questions

>>> Tu as vérifié la valeur de $_SESSION['customer_id'] ? <<<

Oui: un echo de $_SESSION['customer_id'] dans tep_get_tax_rates() donne bien mon bon ID de client.

>>> Sinon as tu fait un echo de $country_id et à coté un echo de $customer_country_id ? <<<

Oui:
echo $country_id; ==> Renvoie -1 (même identifié.., ce qui en soit est logique, vu que $country_id est forcé à -1 si l'on ne précise rien à l'appel)
echo $customer_country_id; ==> Renvoie rien du tout
echo $_SESSION['customer_country_id']; ==> Fonctionne, renvoie un chiffre qui est correct


Bref, comme je le dis, c'est frustrant, et sans erreurs, vas-t-en trouver la cause...

Et sinon, j'ai une question pour toi Havock, pourrais-tu me donner ton fichier de session OU me diriger vers le lien y menant ?
Peut-être utiliserais-je en un incompatible avec OSCOMMERCE 2.2 (et même en mixant (ou pas) du coup, ça fonctionnera pas)

Il y a aussi la piste du session bug 42 de compatibilité que j'exploite, mais, pourtant mon serveur a cette directive sur 'Off' et que je l'active (ou non) ça semble pas changer des masses.. rhâ..

Ce message a été modifié par SaphyraK - 8 May 2015, 00:55.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Havock
posté 11 May 2015, 10:11
Message #15


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Citation (SaphyraK @ 5 May 2015, 22:07) *
Avez vous aussi utilisé directement le fichier :

includes/classes/sessions.php de OSCOMMERCE 2.3.4 ou pas ?



Ce fichier n'existe plus dans la version 2.3.4. Si tu appelle ce fichier dans ton application-top c'est peut-être ce qui cause ce problème.

Citation (SaphyraK @ 5 May 2015, 22:07) *
echo $country_id; ==> Renvoie -1 (même identifié.., ce qui en soit est logique, vu que $country_id est forcé à -1 si l'on ne précise rien à l'appel)
echo $customer_country_id; ==> Renvoie rien du tout
echo $_SESSION['customer_country_id']; ==> Fonctionne, renvoie un chiffre qui est correct


Pas tout à fait ! Si on n'indique pas de valeurs pour les paramètres $country_id et $zone_id dans un appel de tep_get_tax_rate, leur valeur locale
(à l'intérieur de la fonction) est de -1, mais uniquement le temps du test
Code
if ( ($country_id == -1) && ($zone_id == -1) ) {
et ils se voient affecter d'autres valeurs tout de suite.

Si on reprend le début de la fonction :

Code
function tep_get_tax_rate($class_id, $country_id = -1, $zone_id = -1) {
global $customer_zone_id, $customer_country_id;
if ( ($country_id == -1) && ($zone_id == -1) ) {
    if (!tep_session_is_registered('customer_id')) {
        $country_id = STORE_COUNTRY;
        $zone_id = STORE_ZONE;
    } else {
        $country_id = $customer_country_id;
        $zone_id = $customer_zone_id;
    }
}


Le client arrive sur le site et n'est pas identifié.

Quand on appelle tep_get_tax_rate (en supposant que l'on n'indique pas les paramètres $country_id et $zone_id dans l'appel de la fonction), $country_id et $zone_id sont à -1 (en local). On fait le test et dans la foulée $country_id prend la valeur de STORE_COUNTRY et $zone_id celle de STORE_ZONE (donc des valeurs diffèrentes de -1).

Le client s'identifie. On renseigne donc les variables de session $_SESSION['customer_country_id'] et $_SESSION['customer_zone_id'] et $_SESSION['customer_id']. Ces valeurs sont automatiquement affectées aux variables $customer_country_id et $customer_zone_id et $customer_id via la commande dans application_top :
Code
extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);


Quand on appelle tep_get_tax_rate après que le client se soit identifié (en supposant que l'on n'indique pas les paramètres $country_id et $zone_id dans l'appel de la fonction), $country_id et $zone_id sont à -1 (en local). On fait le test et dans la foulée $country_id prend la valeur de $customer_country_id et $zone_id prend la valeur de $customer_zone_id

Si tu fais un echo $country_id après le test if ( ($country_id == -1) && ($zone_id == -1) ) { ; tu ne dois pas avoir de valeur -1 (je pense que tu as dû faire ton echo $country avant le test).

Que ton echo $customer_country_id; ne renvoi rien est étrange. Dans application-top as-tu
Code
extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
. Si oui, poste le code des lignes entourant celle-ci. c'est peut-être un problème de register_globals.

Envoi-moi ton email par mp pour le fichier de session.


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
SaphyraK
posté 13 May 2015, 06:49
Message #16


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



@Havock:

Par rapport à: includes/classes/sessions.php de OSCOMMERCE 2.3.4:
>>> Je ne travaille pas sur cette version, et je n'utilise même pas ce fichier en fait, c'était juste une question (au cas où) smile.gif .

Par rapport à ton explication sur $country_id et $zone_id:
>>> Je le sais bien, mais comme je l'ai dis, j'ai dis à l'appel, et comme de mon côté,
>>>> le système de renseignement futur de $country_id et $zone_id ne fonctionnait pas..
>>>>> (oui oui, ne fonctionnait, il fonctionne maintenant, et je vais dire pourquoi..)

Par rapport à ta demande de donner mon email par messagerie privée pour que que tu puisses m'envoyer ton fichier de session:
>>> Ce n'est désormais plus nécéssaire (et j'ai gardé mon mix du fichier sessions.php (functions).


Et enfin, par rapport à extract():
>>> En fait.. C'était bien un problème de application_top.php (ainsi je supposes que celui de la zone administrative est aussi en problème..)

Pour la grosse explication:

Il ne contenait pas extract()..

Mais, comme je n'ai jamais utilisé extract(),
... j'ai été perturbé par son utilisation, mais en fait, si j'ai bien compris, je vais tenter de dire pourquoi et en quoi c'est utile ici..

Ainsi, dans la balise de code,
... ce qui suit est tiré de mes notes personnelles, si je me plantes, merci de me dire en quoi, mais je penses avoir juste):
Code
Le code d'origine de OSCOMMERCE MS2.2 prévu pour PHP 5.3- fonctionnait très bien sans aucuns problèmes..
Toutefois, sous PHP 5.4+ il n'est pas capable de transférer aux variables $customer_* (même globalisées), les valeurs du tableau SUPERGLOBAL de sessions.
Tableau qui est accessible via: $_SESSION

Ainsi, pour "transférer", on doit extraire (via la fonction PHP extract()) les données de sessions !
Cette fonction ne fonctionne qu'avec un tableau associatif.
Un tableau indexé numériquement ne produira aucun résultat, à moins que l'on n'utilise l'option EXTR_PREFIX_ALL ou EXTR_PREFIX_INVALID.

Bref, on l'utilise
  pour créér des références des index nommés du tableau associatif $_SESSION (qui je rappèle est un tableau de type SUPERGLOBAL)
   afin de les utiliser depuis de simples variables du même nom.

Pour mieux comprendre à quoi correspond les deux options (flags): EXTR_OVERWRITE+EXTR_REFS
C'est très simple, http://php.net/manual/fr/function.extract.php

EXTR_OVERWRITE : Lors d'une collision avec une variable de "référence à", réécrire la variable existante qui sera désormais vraiment une "référence à".
EXTR_REFS : Extrait les variables sous forme de références.
             Cela signifie que les valeurs des variables importées font toujours référence aux valeurs des variables d'origine dans le paramètre array.
             Vous pouvez utiliser cette option seule, ou bien la combiner avec d'autres options avec l'opérateur OR ou AND, dans le paramètre flags.


Exemples d'applications:

        On veut créér dans différentes variables des références aux clefs associatives nommées du tableau SUPERGLOBAL $_SESSION
         (pas un double à proprement parlé mais une "référence à").
        
         Ainsi, supposons que nous avons ce tableau $_SESSION déclaré comme tel:
        
          $_SESSION = array(
           'customer_zone_id' => 2,
           'customer_country_id' => 76
          );
          
          Si l'on fait : echo $customer_zone_id
                      ou echo $customer_country_id
                      
             On sera face à deux variables vides (voir même à une erreur de UNDEFINED VARIABLES.
            
     TOUTEFOIS AVEC:
        
          $_SESSION = array(
           'customer_zone_id' => 2,
           'customer_country_id' => 76
          );

          extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
          
          Si l'on fait : echo $customer_zone_id
                      ou echo $customer_country_id
                      
             On sera face à des valeurs directement extraite de la variable $_SESSION
             Ainsi:
              echo $customer_zone_id       // Donnera: 2
              echo $customer_country_id    // Donnera: 76
              
          ET voilà, le problème des variables simples $ qui sont censées contenir les données de sessions, mais qui ne les avait pas est désormais résolu!



Pour la petite explication,
A l'époque sous PHP 5.3/5.2, OSCOMMERCE MS2.2 fonctionnait normalement,
... sauf que à l'époque toute la structure de stockage des sessions (et pas que) de OSCOMMERCE reposait sur l'utilisation
... (pourtant extrêmement dépréciée) de la directive register_globals.

Ce qui, (nous le savons tous), est une directive absente car retirée dans PHP 5.4+ par souci de sécurité.

Ainsi, les développeurs, pour simuler register_globals utilisent extract() pour référencer les données de $_SESSION dans des variables simples $comme_celle_la !

Bien que je sâches pertinement que ce n'est pas mieux sécurisé que d'utiliser register_globals, extract() a au moins le mérite de fonctionner avec PHP 5.4+

Ainsi, avoir adapté mon application_top.php pour référencer les variables (non déclarées) : $customer_ (et d'autres)..
Via la fonction native PHP, extract(), qui était la seule et unique condition (à moins de procéder à un recodage du code exactement comme j'avais précisé et que tu reprécise dans ta citation qui me citait).

En tout cas, wub.gif viens dans mes bras que je "t'embrasse" Havock! wub.gif

C'est toi qui m'a mis sur la piste !

UN GRAND MERCI.
(si une fois tu veux de l'aide en développement de modules, que ce soit pour OSCOMMERCE ou autres, n'hésite pas, préviens moi via la messagerie du forum, je serai content de te filer un coup de papattes!)

Je vais enfin pouvoir passer à la suite de cette lourde tâche de conversion de cette copie de OSCOMMERCE MS2.2 (hautement modifiée) vers PHP 5.4.

J'ai déjà fait les :


Code
eregi_replace
      ereg_replace
      ereg


Il me reste:

Code
htmlentities
      utf8_decode
      utf8_encode
      htmspecialchars


Et la plus lourde des tâches:

Convertir de très vieilles contributions (paiements, fonctionnalités comme le MISE A JOUR RAPIDE (quick_update)..).. Du beau bowdel en perspective.

Si j'ai d'autres problèmes, voir question, je reposterai ici!



@Aux autres:

Merci d'avoir essayé de m'aider, j'ai apprécié le geste !


====
MESSAGE Edité pour ajouter une partie de mes notes personnelles pour les désireux de comprendre "pourquoi???" ça fonctionne avec extract().

Ce message a été modifié par SaphyraK - 13 May 2015, 06:52.


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Bonbec
posté 13 May 2015, 07:36
Message #17


Ceinture marron OSC
Icône de groupe

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



Re,

Dans application_top.php il y a extract.
Mon fichier est assez modifié (c'est à partir fr la ligne 182 pour moi).
C'est dans la section // start the session
Code
// start the session
  $session_started = false;
  if (SESSION_FORCE_COOKIE_USE == 'True') {
    tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);

    if (isset($_COOKIE['cookie_test'])) {
      tep_session_start();
      $session_started = true;
    }
    if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) {
    extract($_SESSION, EXTR_OVERWRITE+EXTR_REFS);
    }


Sinon, pour toi et pour Havock, je me souviens, à la lecture du dernier message, que j'ai aussi modifié mon fichier catalog/includes/functions/compatibility.php :
Code
// Recursively handle magic_quotes_gpc turned off.
// This is due to the possibility of have an array in
// $HTTP_xxx_VARS
// Ie, products attributes
  function do_magic_quotes_gpc(&$ar) {
    if (!is_array($ar)) return false;

    while (list($key, $value) = each($ar)) {
//          if (is_array($value)) {
//        do_magic_quotes_gpc($value);
        if (is_array($ar[$key])) {
        do_magic_quotes_gpc($ar[$key]);
      } else {
        $ar[$key] = addslashes($value);
      }
    }
  }

// $HTTP_xxx_VARS are always set on php4
  if (!is_array($_GET)) $_GET = array();
  if (!is_array($_POST)) $_POST = array();
  if (!is_array($_COOKIE)) $_COOKIE = array();

  if ( (PHP_VERSION >= 5.0) && function_exists('ini_get') && (ini_get('register_long_arrays') == false) ) {
//    $HTTP_GET_VARS =& $_GET;
//    $HTTP_POST_VARS =& $_POST;
//    $HTTP_COOKIE_VARS =& $_COOKIE;
//    $HTTP_SESSION_VARS =& $_SESSION;
//    $HTTP_SERVER_VARS =& $_SERVER;
$HTTP_GET_VARS = &$_GET;
$HTTP_POST_VARS = &$_POST;
$HTTP_REQUEST_VARS = &$_REQUEST;
$HTTP_SESSION_VARS = &$_SESSION;
$HTTP_COOKIE_VARS = &$_COOKIE;
$HTTP_SERVER_VARS = &$_SERVER;
$HTTP_FILES_VARS = &$_FILES;
$HTTP_ENV_VARS = &$_ENV;
  }


Et pour le même fichier mais dans l'admin :
Code
////
// Recursively handle magic_quotes_gpc turned off.
// This is due to the possibility of have an array in
// $_XXX
// Ie, products attributes
  function do_magic_quotes_gpc(&$ar) {
    if (!is_array($ar)) return false;

    while (list($key, $value) = each($ar)) {
      if (is_array($value)) {
        do_magic_quotes_gpc($value);
      } else {
        $ar[$key] = addslashes($value);
      }
    }
  }

// $HTTP_xxx_VARS are always set on php4
  if (!is_array($_GET)) $_GET = array();
  if (!is_array($_POST)) $_POST = array();
  if (!is_array($_COOKIE)) $_COOKIE = array();

// handle magic_quotes_gpc turned off.
  if (!get_magic_quotes_gpc()) {
    do_magic_quotes_gpc($_GET);
    do_magic_quotes_gpc($_POST);
    do_magic_quotes_gpc($_COOKIE);
  }


Par contre je confirme que je n'ai pas fait de "mix" pour mes fichiers sessions.php
Je les ai remplacé par ceux de la version 2.3 et çà fonctionne au poil.


--------------------
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
 
Havock
posté 13 May 2015, 09:57
Message #18


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



@ SaphyraK : Content de t'avoir mis sur la piste.

@ Bonbec : Tu as mis l'intégralité de tes fichiers compatibility.php ou juste les parties modifiées ?

Dans la fonction do_magic_quotes_gpc j'ai une ligne : reset($ar); avant la boucle while (tu l'a enlevée ?)

Je ne suis pas certain de l'utilité de ton code :

Code
  if (!is_array($_GET)) $_GET = array();
  if (!is_array($_POST)) $_POST = array();
  if (!is_array($_COOKIE)) $_COOKIE = array();


Les variables superglobales $_GET, $_POST et $_COOKIE ne sont elles pas par défaut des arrays ?

Le code initial concernait les variables $HTTP_GET_VARS , $HTTP_POST_VARS et $HTTP_COOKIE_VARS et là le code pouvait se justifier pour des versions très anciennes de PHP

Code
if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();
    if (!is_array($HTTP_POST_VARS)) $HTTP_POST_VARS = array();
    if (!is_array($HTTP_COOKIE_VARS)) $HTTP_COOKIE_VARS = array();



Dans ta partie :

Code
if ( (PHP_VERSION >= 5.0) && function_exists('ini_get') && (ini_get('register_long_arrays') == false) ) {
//    $HTTP_GET_VARS =& $_GET;
//    $HTTP_POST_VARS =& $_POST;
//    $HTTP_COOKIE_VARS =& $_COOKIE;
//    $HTTP_SESSION_VARS =& $_SESSION;
//    $HTTP_SERVER_VARS =& $_SERVER;
$HTTP_GET_VARS = &$_GET;
$HTTP_POST_VARS = &$_POST;
$HTTP_REQUEST_VARS = &$_REQUEST;
$HTTP_SESSION_VARS = &$_SESSION;
$HTTP_COOKIE_VARS = &$_COOKIE;
$HTTP_SERVER_VARS = &$_SERVER;
$HTTP_FILES_VARS = &$_FILES;
$HTTP_ENV_VARS = &$_ENV;
  }


pourquoi testes-tu register_long_arrays à false ?

Sinon c'est vrai que je n'ai pas mis les lignes :

Code
$HTTP_FILES_VARS = &$_FILES;
$HTTP_ENV_VARS = &$_ENV;
$HTTP_REQUEST_VARS = &$_REQUEST;


Par cohérence dans le traitement des superglobales, il semble logique de mettre ces trois lignes en plus, mais as-tu eu une raison autre de les ajouter ?



Sinon par rapport à la version 2.3.4 j'ai plusieurs fonctions que j'ai conservé bien que je pense que ce n'est pas utile (je pense que ces fonctions figurent dans compatibility.php pour des versions très anciennes de PHP) :

Code
if (!function_exists('array_splice')) {
    function array_splice(&$array, $maximum) {
        if (sizeof($array) >= $maximum) {
            for ($i=0; $i<$maximum; $i++) {
                $new_array[$i] = $array[$i];
            }
            $array = $new_array;
        }
    }
}

if (!function_exists('in_array')) {
    function in_array($lookup_value, $lookup_array) {
        reset($lookup_array);
        while (list($key, $value) = each($lookup_array)) {
            if ($value == $lookup_value) return true;
        }

        return false;
    }
}

if (!function_exists('array_reverse')) {
    function array_reverse($array) {
        for ($i=0, $n=sizeof($array); $i<$n; $i++) $array_reversed[$i] = $array[($n-$i-1)];

        return $array_reversed;
    }
}

if (!function_exists('constant')) {
    function constant($constant) {
        eval("\$temp=$constant;");

        return $temp;
    }
}

if (!function_exists('is_null')) {
    function is_null($value) {
        if (is_array($value)) {
            if (sizeof($value) > 0) {
                return false;
            } else {
                return true;
            }
        } else {
            if (($value != '') && ($value != 'NULL') && (strlen(trim($value)) > 0)) {
                return false;
            } else {
                return true;
            }
        }
    }
}

if (!function_exists('array_merge')) {
    function array_merge($array1, $array2, $array3 = '') {
        if (empty($array3) && !is_array($array3)) $array3 = array();
        while (list($key, $val) = each($array1)) $array_merged[$key] = $val;
        while (list($key, $val) = each($array2)) $array_merged[$key] = $val;
        if (sizeof($array3) > 0) while (list($key, $val) = each($array3)) $array_merged[$key] = $val;

        return (array) $array_merged;
    }
}

if (!function_exists('is_numeric')) {
    function is_numeric($param) {
        // return ereg('^[0-9]{1,50}.?[0-9]{0,50}$', $param);
        return preg_match('/^[0-9]{1,50}.?[0-9]{0,50}$/', $param); // PHP 5.3
    }
}

if (!function_exists('array_slice')) {
    function array_slice($array, $offset, $length = 0) {
        if ($offset < 0 ) {
            $offset = sizeof($array) + $offset;
        }
        $length = ((!$length) ? sizeof($array) : (($length < 0) ? sizeof($array) - $length : $length + $offset));
        for ($i = $offset; $i<$length; $i++) {
            $tmp[] = $array[$i];
        }

        return $tmp;
    }
}

if (!function_exists('array_map')) {
    function array_map($callback, $array) {
        if (is_array($array)) {
            $_new_array = array();
            reset($array);
            while (list($key, $value) = each($array)) {
                $_new_array[$key] = array_map($callback, $array[$key]);
            }
            return $_new_array;
        } else {
            return $callback($array);
        }
    }
}

if (!function_exists('str_repeat')) {
    function str_repeat($string, $number) {
        $repeat = '';

        for ($i=0; $i<$number; $i++) {
            $repeat .= $string;
        }

        return $repeat;
    }
}



Sinon ma plus grosse interrogation est liée à l'aspect encodage des caractères.
Concrètement je n'ai aucun intérêt spécifique à passer en UTF8 (surtout que d'après ce que j'ai lu il peut y avoir de grosses surprises lors des conversions de ISO 8859-1 vers UTF8 ; et je ne vois pas trop comment procéder sur un site live sans interruption prolongée). La logique veut que je reste en ISO 8859-1, mais j'ai un doute sur la nature des données stockées dans ma base.
Ma base est ancienne et très volumineuse. Elle a été créé en latin1_swedish_ci (ce n'est pas moi qui avait créé la base initiale donc je ne sais pas pourquoi c'est swedish_ci smile.gif ). Lors des évolutions successives et des changements de serveurs je n'ai jamais eu besoin de changer ce paramètre, mais je n'ai jamais poussé plus loin mes investigations. La question que je me pose vient du fait que j'ai constaté que sur mon serveur actuel les paramètres "jeu de caractères pour mysql" et "Interclassement pour la connexion au serveur" sont à UTF-8 Unicode blink.gif blink.gif
Ma crainte est qu'avec ces paramètres à UTF8 j'ai stocké des données au format UTF8 dans ma base ohmy.gif Je vais creuser la question, mais si vous vous y connaissez vos avis seront les bienvenus.


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
fabbea
posté 14 May 2015, 15:42
Message #19


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-November 07
Membre no 19732



Bonjour à tous,

àl'aide ce ce post et d'autres je suis en train de faire mon adaptation de oscommerce 2.2 vers php 5.4 et franchement... je galère.

voilà où j'en suis :
- remplacement de tous les ereg eregi selon les différentes contributions données,
- de tous les mysql par mysqli,
- de tous les $HTTP_*_VARS par $_GET, $_POST, $_COOKIE, $_ENV, $_FILES...

là ma boutique s'affiche mais j'ai un problème de session, rien en se met au panier, je ne peux pas m'identifier et comme erreur j'ai ceci :

select count(*) as total from sessions where sesskey = ''

[TEP STOP]


aussi bien sur le front-office que l'admin.

C'est vrai que j'ai modifié X fois mes fichiers application_top.php et sessions, qui ont différé selon les contributions que j'ai parcourues et suivies.
Du coup je ne sais plus quels sont les bons fichiers - au niveau des sessions - à utiliser...

Entre nous soit dit, le fait qu'il y ait des contribs qui se "contredisent" ne me rassure pas.
Par exemple pour application_top.php, j'ai bien modifié 2/3 fois le code original en supprimant à chaque fois le précédent. Et à chaque fois pour arriver au même but (être compatible php 5.4).

J'ai l'impression qu'il n'y a pas un seul post avec une méthode, mais plusieurs qui se complètent et parfois, défont le travail déjà entrepris sur une contribution précédente.
Ou alors c'est moi qui ai mal compris ce qu'il y a à faire (simple question auprès de vous, pas une 'accusation' envers les contributeurs - bien au contraire, merci à eux) ?

Si quelqu'un pouvait me tuyauter sur mon problème session ou me mettre sur la voix, ce serait sympa, merci !
Bon courage à tous !!

A bientôt
amicalement
Go to the top of the page
 
Havock
posté 15 May 2015, 11:07
Message #20


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Citation (fabbea @ 14 May 2015, 15:42) *
là ma boutique s'affiche mais j'ai un problème de session, rien en se met au panier, je ne peux pas m'identifier et comme erreur j'ai ceci :

select count(*) as total from sessions where sesskey = ''

[TEP STOP]


aussi bien sur le front-office que l'admin.


Bonjour à toi smile.gif
Effectivement ça ressemble très fortement à un soucis de sessions.

As-tu essayé d'utiliser les fichiers de sessions de la version 2.3.4 ? Pour Bonbec et moi ça a l'air de marcher directement.


--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
fabbea
posté 18 May 2015, 14:43
Message #21


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-November 07
Membre no 19732



Bonjour Havock,

merci déjà de l'intérêt porté à mon cas ! Ca fait plaisir smile.gif
Je viens d'essayer avec les 2 fichiers de session de oscommerce 2.3.4 :
- ../admin/includes/functions/sessions.php
- ../includes/functions/sessions.php

A ce que je vois le fichier - ../admin/includes/classes/sessions.php a purement et simplement disparu que la 2.3.4...


Effectivement je n'ai plus le message d'erreur, mais je ne peux toujours pas me connecter et m'identifier en front-office.
Quant au back-office, j'ai désormais le message suivent en lieu et place du précédent : "local MySQL server through socket '/var/run/mysqld/mysqld.sock".

Je continue à chercher...

Cordialement
Fabb
Go to the top of the page
 
fabbea
posté 18 May 2015, 14:49
Message #22


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 16
Inscrit : 13-November 07
Membre no 19732



Une question ?

Avez-vous modifié quoi que ce soit dans la base de données (ajout / modification de champs etc...), ou dans les requêtes vers celle-ci dans les fichiers php du site pour passer le site en php 5.4 ?
Go to the top of the page
 
Havock
posté 18 May 2015, 16:11
Message #23


Ceinture bleue OSC
Icône de groupe

Groupe : Membres
Messages : 894
Inscrit : 4-February 04
Membre no 1926



Bonjour fabbea

Citation (fabbea @ 18 May 2015, 14:43) *
A ce que je vois le fichier - ../admin/includes/classes/sessions.php a purement et simplement disparu que la 2.3.4...


A ma connaissance ce fichier ne sert effectivement plus.

Citation (fabbea @ 18 May 2015, 14:43) *
Avez-vous modifié quoi que ce soit dans la base de données (ajout / modification de champs etc...), ou dans les requêtes vers celle-ci dans les fichiers php du site pour passer le site en php 5.4 ?


Non pour le passage à PHP 5.4

Citation (fabbea @ 18 May 2015, 14:43) *
Effectivement je n'ai plus le message d'erreur, mais je ne peux toujours pas me connecter et m'identifier en front-office.
Quant au back-office, j'ai désormais le message suivent en lieu et place du précédent : "local MySQL server through socket '/var/run/mysqld/mysqld.sock".


Tu es en local ? Sur un serveur mutualisé ? Tu as changé de version de mysql ?

Regarde du coté des fichier configure.php du front et de l'admin la ligne :

Code
define('DB_SERVER', 'localhost');


et essaye de remplacer localhost par 127.0.0.1

Code
define('DB_SERVER', '127.0.0.1');



--------------------
L'indispensable est en cours de traitement,
L'urgent sera traité demain,
Le normal sera traité plus tard,
Le reste on vera ...
En conclusion : les journées sont trop courtes.
Utilisateur de MS2.2 Max 1.5 - OSC-Affiliate 1.09 - Admin With Access Levels 2.1 - Meta Tag Controller/ Generator - Credit/Gift Voucher/Coupons 5.05 - Download Controller v5.3 - X-Sell MS2 - WYSIWYG HTML Editor for Admin 1.7 - Dynamic Mo Pics - Loginbox Best - Order logging before payment processing - User Tracking - Faster Page Loads, Less DB queries - Plus plein de modifs perso :-)
Go to the top of the page
 
SaphyraK
posté 28 May 2015, 19:39
Message #24


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 93
Inscrit : 6-November 12
Membre no 31715



Bonjour ici!

Bon, j'ai juste une petite question (je pense avoir éradiqué le problème, mais qui sait.. peut-être m'y prendrais-je mal)..

Alors, cette question concerne l'attribut dans la barre d'adresse : osCAdminID
Et évidemment, depuis la zone administrative.


Pour être clair, voilà le comportement de mon tep_href_link() (celui dans admin/functions/html_output.php) sous PHP 5.2/PHP 5.3 :

Il ajoute tout seul (et je ne l'explique pas), l'attribut osCAdminID dans les liens générés.


Mais sous PHP 5.4+ il ne l'ajoute pas.


Pour être encore plus clair, voici le code 'NON modifié':

Code
  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL') {
    if ($page == '') {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>');
    }
    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_ADMIN;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == 'true') {
        $link = HTTPS_SERVER . DIR_WS_ADMIN;
      } else {
        $link = HTTP_SERVER . DIR_WS_ADMIN;
      }
    } else {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>');
    }
    if ($parameters == '') {
      $link = $link . $page . '?' . SID;
    } else {
      $link = $link . $page . '?' . $parameters . '&' . SID;
    }

    while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

    return $link;
  }



ET le code dans la version que j'ai modifié:

Code
  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $ajout_osCAdminID = true) {
    if ($page == '') {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>');
    }
    if ($connection == 'NONSSL') {
      $link = HTTP_SERVER . DIR_WS_ADMIN;
    } elseif ($connection == 'SSL') {
      if (ENABLE_SSL == 'true') {
        $link = HTTPS_SERVER . DIR_WS_ADMIN;
      } else {
        $link = HTTP_SERVER . DIR_WS_ADMIN;
      }
    } else {
      die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL SSL<br><br>Function used:<br><br>tep_href_link(\'' . $page . '\', \'' . $parameters . '\', \'' . $connection . '\')</b>');
    }
    if ($parameters == '') {
      $link = $link . $page . '?' . SID;
    } else {
      $link = $link . $page . '?' . $parameters . '&' . SID;
    }

    while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1);

    switch ($ajout_osCAdminID)
        {
            default:
            case true:
                    if (!empty($_COOKIE['osCAdminID']))
                     {
                        $http_attribute_character = '';
                        if (empty($parameters)) { $http_attribute_character = '?'; } else { $http_attribute_character = '&'; }
                     $link = $link . $http_attribute_character . 'osCAdminID=' . $_COOKIE['osCAdminID']; }
                break;
                
            case false:
                    // ne rien faire..
                break;
        }
        
    return $link;
  }



Ma version ajoute bien osCAdminID à la chaîne de l'URL générée
(et fait aussi attention au caractère à insérer comme attribut: soit ? soit &).

Il reste cependant que SID semble 'vide'..

Je ne sais même pas à quoi il sert.


Qu'avez-vous fait de spécial dans vos fichiers de la zone admin ?

includes/application_top.php
includes/functions/general.php


et éventuellement les endroits où vous avez utilisé extract() ?


Merci d'avance !


--------------------
We get Everything, we are developpers, we are masters of the universe !
(just kidding.. **sigh**, just developpers...)
Go to the top of the page
 
Kawaii77
posté 26 Jul 2015, 15:24
Message #25


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 29
Inscrit : 15-December 08
Membre no 23957



J'ai posté ici : http://www.oscommerce-fr.info/forum/index....showtopic=71439
car je pensais que je ne serais pas au bon endroit en venant ici, mais je vois que vous parlez des fichiers de la version 2.3.
Pour moi le fichier sessions ne fonctionnait pas, la session se créait mal en mettant certaines variables à Null.
C'est la fonction tep_session_register qui me cassait tout.
J'ai élagué pour ne garder que :
Code
   function tep_session_register($variable) {
     global $session_started;
      if ($session_started == true) {$_SESSION[$variable] =& $GLOBALS[$variable];}
      return false;
   }


Et maintenant ma session s'enregistre correctement, y compris le panier.


--------------------
version 2.3
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 : 21st November 2017 - 16:32
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)