Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2008, 13h50   #1
Invité de passage
 
Inscription : mai 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 5
Points : 4
Points : 4
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 :
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 :
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 :
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 :
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.
renard.masque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2008, 17h22   #2
Invité de passage
 
Inscription : mai 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 5
Points : 4
Points : 4
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 :
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 :
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é
renard.masque est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h41.


 
 
 
 
Partenaires

Hébergement Web