IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Exécution différente d'un script sur différents serveurs


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut Exécution différente d'un script sur différents serveurs
    Bonjour, je viens de constater un problème qui est très gênant.

    Je dois remettre à jour un site de commerce qui vend des vêtements. On peut donc les classer par marques, catégories, couleurs ou encore prix. On m'a demandé un fil d'Ariane qui respecte les choix du client et non un ordre pré-établi. Je suis donc parti sur un tableau de session qui enregistre l'ordre d'affectation des différentes variable d'URL correspondantes ($_GET[ID_MARK] pour la marque, $_GET[ID_CAT] pour la catégorie, $_GET[SCAT] pour la sous-cat, $_GET[COUL] pour la couleur, $_GET[PRIX] pour la fourchette de prix et $_GET[TRI] pour le classement).

    A chacune de ces variables correspond un champ dans le tableau de session $_SESSION[tab_ariane] et a chaque nouvelle variable 'URL définit le champ classement dans le tableau prend la valeur max+1 du tableau.

    Pour plus de clarté je vous mets le script en lui-même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    //  ----------------------------------------------------------------------------
    //  -- Comparaison du tableau de session et des variables d'URL ----------------
    //  -- pour l'ordre du fil d'ariane --------------------------------------------
    //  ----------------------------------------------------------------------------
     
        //  On vérifie que toutes les variables GET dont le classement est défini ont bien une valeur non nulle (si pas on mets le classement à 0)
     
        foreach ($_SESSION[tab_ariane] as $ari_nom => $ari_val)
        {
          if ($ari_val != 0)
          {
            if (!$_GET[$ari_nom] OR $_GET[$ari_nom] == '') $_SESSION[tab_ariane][$ari_nom] = 0;
          }
        }
     
      	//  On récupère le max du tableau d'ariane auquel on ajoute 1 (la prochaine variable à enregistrer aura comme classement max+1)
     
        $ari_cla = max($_SESSION[tab_ariane]) + 1;
     
        //  On vérifie que les variables GET présentes et concernées par le fil d'ariane ont bien un classement
     
        foreach ($_GET as $get_nom => $get_val)
        {
          if ($get_nom == 'RUB' OR $get_nom == 'ID_MARK' 
    OR $get_nom == 'ID_CAT' OR $get_nom == 'SCAT' 
    OR $get_nom == 'COUL' OR $get_nom == 'PRIX' 
    OR $get_nom == 'ID_PROD')
          {
            //  si une variable GET a une valeur non nulle mais pas de classement, on lui mets son classement avec $ari_cla
            if (($get_val != 0 OR $get_val != '') AND $_SESSION[tab_ariane][$get_nom] == 0)
            {
              $_SESSION[tab_ariane][$get_nom] = $ari_cla;
              $ari_cla++;
            }
          }
        }
    Je vous signale que le premier hébergement c'est mon perso qui est chez1and1 tandis que le deuxième est un espace pour les test pour les futurs modules de notre site (je travaille pour un site de commerce comme je vous l'ai dit) chez WAW...

    Si quelqu'un a une explication parce que là je bloque complet. Je savais qu'un script n'étais pas traité pareil sur deux serveurs différents...

  2. #2
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    je sais pas trop mais regarde la conf php voir apache sur les deux environnement !

    en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo phpinfo(); ?>
    regarde s'il n'y a pas de grosse différence de configuration. Les session ne sont pas forcément activer.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut
    Bon mon serveur perso (chez 1and1) est en PHP 4.
    Celui sur le quel je fais les tests est PHP 5.

    Est ce que ça change vraiment quelque chose.

    PS : oui les sessions sont gérées dans les deux cas puisque j'arrive à afficher mon tableau. Le problème est simplement qu'il n'enregistre pas les bons classements.

    Edit : mais si vos regardez bien mon code, j'utilise uniquement des trucs basiques de PHP qui devrait marcher avec toutes les versions de PHP à partir du moment ou la session est gérée...

    Edit 2 : comme vous pourrez le constater, le menu javascript n'est pas fonctionnel sur mon espace perso (seulement sur la version de développement chez WAW), mais vous pouvez toujours simuler les requetes du client qui agit sur les menus en insérant des données entre les tirets de l'URL

  4. #4
    Membre habitué Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Points : 155
    Points
    155
    Par défaut
    pour des conf php je sais pas trop là par contre un truc qui peut gêné, (peut être) c'est ta façon d'écrire les tableau ! c'est pas très propre tout ça.

    toi tu fais il vaut mieux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['tab_ariane']
    à la rigueur ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION["tab_ariane"]
    mais les simple côte c'est mieux et plus rapide.

    c'est peut être ça qui gêne l'intépréteur php !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut
    J'ai rajouté des simples cotes exactement comme tu m'as dit mais ça n'a rien changé à mon problème...

    Je continue de réfléchir, je pense essayer en utilisant une boucle for au lieu de foreach mais je n'y crois pas trop...

  6. #6
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    L'explication c'est que l'option "register_globals" est à on sur un des 2 serveurs.
    Ce qui fait que tes différents paramètres s'écrasent entre eux.
    Par exemple :

    $_GET['truc'] devient $truc
    et
    $_SESSION['truc'] devient $truc aussi.

    Conslusion : register_globals c'est mal, très mal

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut
    J'ai regardé, effectivement register_globals est à on sur mon serveur perso...

    Mais en quoi mes paramètres s'écrasent entre eux puisque qu'à aucun moment je n'utilise $truc au lieu de $_GET['truc'] ou encore $_SESSION['truc']..

    Mais je vais tester en désactivant le register_globals sur mon serveur

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Points : 70
    Points
    70
    Par défaut
    Bon bin je sais pas si c'est une bonne ou une mauvaise nouvelle mais ça vient bien de là. J'ai pu mettre register_globals à off sur mon serveur perso et la conséquence directe est que le fil d'ariane ne fonctionne plus...

    Arf !!! Si quelqu'un a une idée pour modifier mon script pour qu'il marche avec le register_globals à off, parce que je suis décu là, j'en avais chier une journée pour faire un fil d'ariane qui respecte l'ordre de tri du client, et c'est tout réduit à néant par ce putin de paramètre PHP.


Discussions similaires

  1. [PowerShell] Exécuter un script sur un serveur distant
    Par Merwyn dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 02/10/2012, 19h47
  2. Réponses: 12
    Dernier message: 26/08/2008, 09h30
  3. [Configuration] Valeurs différentes pour même code sur 2 serveurs
    Par Xris dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 12/02/2007, 01h40
  4. Comportement différent d'un script sur un autre poste
    Par DoRiane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/01/2007, 20h41
  5. Tester son script sur différents navigateurs
    Par ePoX dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2006, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo