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 :

[POO] [register-globals] Problème de variable


Sujet :

Langage PHP

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut [POO] [register-globals] Problème de variable
    Bonsoir,

    Quelqu'un peut-il m'expliquer pourquoi lorsqu'on met register-globals à On, les classes ne fonctionnent pas correctement et ne peuvent pas conserver leurs variables ?

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Parce qu'il doit y avoir des collisions avec les noms de variables automatiquement générés par register_globals.

    Les collisions de noms et les failles de sécurité qui en découlent sont les principales raisons qui font que register_globals doit toujours être désactivé.

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Une petite recherche dans le FAQ t'aurait donné ceci : Pourquoi mon application ne fonctionne plus sans erreur avec EasyPhp 1.7 ?

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    J'ai déjà lu ça mais ça ne m'aide pas. Dans mon code, je n'arrive pas à savoir quelles variables posent problème.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Après de nouveaux tests, il apparaît que le problème ne vient pas de register_globals.

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Neuromancien2
    Après de nouveaux tests, il apparaît que le problème ne vient pas de register_globals.
    Ok, alors sans code ça va devenir ultra-dur

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par Eusebius
    Ok, alors sans code ça va devenir ultra-dur
    Le code complet est ici.

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Neuromancien2
    Le code complet est ici.
    On ne va pas relire TOUT ton code. Il faut que tu puisses cerner un minimum le problème avant de poster...

    Apparemment tes problèmes c'est suite à une migration. Est-ce que les deux serveurs ont la même version de PHP ?

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par Eusebius
    On ne va pas relire TOUT ton code. Il faut que tu puisses cerner un minimum le problème avant de poster...

    Apparemment tes problèmes c'est suite à une migration. Est-ce que les deux serveurs ont la même version de PHP ?
    Le système se compose d'une classe formGenerator qui gère les formulaires et de classes textField et passwordField qui gèrent les champs.

    La classe formGenerator contient une méthode validate() qui vérifie les données envoyées en appelant les méthodes validate() de chaque champ. Elle affiche ensuite le formulaire via la méthode generateHTML(), qui appelle les méthodes generateHTML() de chaque champ.

    Dans la classe textField, la méthode validate() récupère les valeurs postées, vérifie la validité des données et affecte à nouveau la valeur postée aux champs (via la méthode setValue()) pour un nouvel affichage en cas d'erreur. Si les données ne sont pas valides, la variable $hasErrors prend la valeur 1. La méthode generateHTML() du champ affiche un message d'erreur.

    Le script principal définit le formulaire et les champs puis traite le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( $form1->validate() ) {
    $form1->process();
    } else {
    echo $form1->generateHTML();
    L'achive contient un exemple.

    J'ai fait echo $hasErrors, qui m'affiche 1 juste après la validation, puis 0 lors de l'affichage du formulaire. Le formulaire ne renvoit aucune valeur.

    Comme je ne comprends pas du tout ce qui se passe, je ne peux pas cerner davantage le problème.

    Le script fonctionne chez moi avec PHP5, mais pas chez mon hébergeur avec PHP4.

  10. #10
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Neuromancien2
    Le script fonctionne chez moi avec PHP5, mais pas chez mon hébergeur avec PHP4.
    Tu aurais pu commencer par ça ! Le modèle objet de PHP5 n'est pas du tout le même que celui de PHP4 ! Tu utilises sans doute des tas de choses qui ne sont pas disponibles en PHP4. A mon avis, faut pas chercher plus loin...

  11. #11
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    J'ai renommé tous les fichiers en .php5 et tout fonctionne. Quelles sont les fonctionnalités POO non supportées sous PHP4 ? J'aimerais rendre mes scripts compatibles si c'est possible.

  12. #12
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Neuromancien2
    J'ai renommer tous les fichiers en .php5 et tout fonctionne.
    Alors ça c'est rigolo !
    Citation Envoyé par Neuromancien2
    Quelles sont les fonctionnalités POO non supportées sous PHP4 ? J'aimerais rendre mes scripts compatibles si c'est possible.
    http://stephaneey.developpez.com/tut...p5_nouveautes/

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 640
    Points : 408
    Points
    408
    Par défaut
    Citation Envoyé par Eusebius
    Alors ça c'est rigolo !
    OVH n'utilise pas PHP5 par défaut. Il faut renommer les fichier en .php5 sinon c'est PHP4 qui sera utilisé.

  14. #14
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Neuromancien2
    OVH n'utilise pas PHP5 par défaut. Il faut renommer les fichier en .php5 sinon c'est PHP4 qui sera utilisé.
    C'est noté. Faudra que je me fasse une conf comme ça chez moi...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec un pointeur global sur une variable manager
    Par sepullayer dans le forum C++/CLI
    Réponses: 12
    Dernier message: 26/03/2007, 13h00
  2. Réponses: 4
    Dernier message: 04/02/2007, 19h39
  3. Réponses: 2
    Dernier message: 25/12/2006, 19h08
  4. Problème de variable globale
    Par Oberown dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2006, 11h57
  5. Problème de variable globale
    Par Tournevyks dans le forum Général Python
    Réponses: 6
    Dernier message: 29/06/2006, 11h16

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