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 :

pb de classes et session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut pb de classes et session
    hello tous,

    j'ai un souci avec mes session a travers les classes en PHP4 :

    j'ai une première classe ADVANCED qui définit les Paths et url de mon site, et qui déclare un session_start(); dans le constrcuteur,

    une classes HTML hérite de cette ADVANCED et me sert à set mes header

    une classe SQL hérite de ADVANCED et me sert à déclarer mes DB fields etc

    jusque là l'héritage de tout cela est ok.

    En revanche, je déclare une classe USER qui hérite de SQL (et donc par ricochet de ADVANCED), et là, quand j'assigne une valeur à un $_SESSION['login'], impossible de récupérer la variable de session sur la page qui appelle.....


    - classe ADVANCED

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Advanced   
    {
         function advanced()
         {
              session_start();
     
             //  set des paths et url
         }
    }
    - la classe SQL

    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
     
    classe Sql extends Advanced
    {
          function sql()
          {
                parent::advanced();
     
                // set des constantes DB
          }
     
           function select_login($login)
           {
                 // les query vers la DB
                 // return de la String login
           }
    }
    - la classe USERS

    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
     
    class Users extends Sql
    {
            function users()
            {
                  parent::sql();
            }
     
            function set_session_login($login)
            {
                    // recup des DB OK
                    $mon_login = $this->select_login($login);
     
                    // ce echo là marche !
                    echo  $mon_login;
     
                    $_SESSION['login'] = $mon_login;
     
                    // ce echo là marche !
                    echo $_SESSION['login'];
            }
    }

    mon problème est dans la page qui appelle tout ce beau monde :

    - page login.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    require('../advanced/advanced.php');
    require('../advanced/html.php');
    require('../advanced/sql.php');
    require('../advanced/users.php');
     
    $user = new Users(); // ok
     
    $user->set_session_login('renard'); // ok, affiche les echo de la classe
     
    // en revanche ici ça ne me récupère pas ma var de session !
    // ça m'affiche juste "SESSION LOGIN =" et puis rien derière...
    echo 'SESSION LOGIN = '.$_SESSION['login'];
    j'en suis à mon troisième tube d'aspirine.. si quelqu'un à une idée...

    merci !

    PS : je viens d'essayer de mettre le session_start(); directement dans la page login.php, tt en haut of course, sans plus de succès..

    PS2 : un echo du session_id(); dans la page login.php me renvoie la même chose qu'un echo du session_id() dans la classe users ..... bouhouhouhououuuu

    r.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 5
    Par défaut ha bah d'accord
    bon, en fait il s'agissait d'un pb parallèle.

    pour ceux que ça intéresse :

    j'avais une fonction debug dans ma classe Advanced qui affichait un message stocké en Session lui aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function showLog()
    {
    $_session['log'] = $this->message_erreur;
    // javascript
    echo "
    <script type=\"text/javascript\" language=\"JavaScript\">
    window.open( 'code/alert.php' , 'debug', 'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=900, height=500, left=100, top=50');
    </script>
    ";
    }
    et dans mon popup j'avais un session_start();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_start() ;
    //
    echo $_SESSION['log'] ;
    $_SESSION['log'] = "";
    donc j'ai viré cette fonction (que j'ai faite finalement en fopen/fwrite) et ça marche .... allez comprendre... si quelqu'un à pigé je suis intéressé

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

Discussions similaires

  1. Classes et sessions
    Par badibad dans le forum Langage
    Réponses: 8
    Dernier message: 22/06/2013, 18h45
  2. Passage de classe par session
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 02/07/2008, 20h51
  3. Réponses: 7
    Dernier message: 24/08/2007, 10h57
  4. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  5. [VB.NET] Server.MapPath et Session dans une classe
    Par nancy54 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/09/2004, 14h23

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