Session Globals et classes

WRInaute accro
Bonjour,

Je rencontre un problème pour lequel je ne trouve pas de solution.

Dans une méthode de classe (php5) j'ai besoins de consulter une variable de session, mais rien n'y fait.
Cette variable de session contient un booléen et la condition suivante dans ma methode ne foncttionne pas :

Code:
if($_SESSION['mavariable']){ $GLOBALS['uneautrevariable']=trucmachin; }

J'ai résolu le problème car je fais une opération sur une variable (qui n'existe que si c'est nécessaire) de la page qui utilise cet objet en testant l'existence de la variable a traiter ($uneautrevariable) comme ceci :

Code:
if(isset($GLOBALS['uneautrevariable'])){ $GLOBALS['uneautrevariable']=trucmachin; }

Mais j'aimerais comprendre le pourquoi du comment.

Merci
 
WRInaute accro
Bacteries a dit:
T'as démarrer ta session?

Que te dit un print_r($_SESSION); ?

oui oui t'inquiet pas la session est active et tout et tout, ça fait même un moment que cet aspect est maîtrise, puisque pour te donner un peut de détail, en fait la variable de session en question, s'appel 'debug' et vaux vrai ou faux .
Cette variable me sert a basculer ma session en mode 'debug' où justement, je produit un affichage particulier de toutes mes variables (entre autre) en voici le dump pour exemple :

16 Variables
$_SESSION['droits'] = webmaster
$_SESSION['id'] = 1
$_SESSION['nom'] = xxxxxxxx
$_SESSION['prenom'] = xxxxxxxxx
$_SESSION['alias'] = xxxxxxxxx
$_SESSION['mail'] = webmaster@xxxxxxxxx.com
$_SESSION['mdp'] = xxxxxxxxx
$_SESSION['lastip'] = 81.xxx.xxx.xxx
$_SESSION['info'] = ...
$_SESSION['url_avatar'] =
$_SESSION['site'] =
$_SESSION['libsite'] =
$_SESSION['inscription'] = 0000-00-00
$_SESSION['last_connexion'] = 2008-06-12 06:54:54
$_SESSION['log'] = 1
$_SESSION['debug'] = 1

Le truc c'est que quand j'exécute la condition au dessus dans ma méthode, que $_SESSION['debug'] soit true ou false, ça ne change rien.
Toujours pour la curiosité, cette condition, conditionne (hummmm elle est bonne celle là) à l'intérieur de ma méthode de classe l'enregistrement d'une requête dans une array :

Code:
 if(isset($GLOBALS['tab_req_obj'])){
 	array_push($GLOBALS['tab_req_obj'],"class-edito : $in");
 }

Comme le mode 'debug' de la session est initialisé par le passage à true de cette variable, je crée l'array 'tab_req_obj' en amont de l'usage de l'objet (en fait juste après le session_start) donc la pirouette ci dessus fonctionne (test avec isset) mais je ne comprend pas pourquoi je n'arrive pas a faire la même chose sous cette forme :

Code:
 if($_SESSION['debug']){
 	array_push($GLOBALS['tab_req_obj'],"class-edito : $in");
 }

les mystères de php .... et de ma tête creuse car il y a sûrement une réponse évidente ...
 
WRInaute occasionnel
if($_SESSION['debug']==1){
array_push($GLOBALS['tab_req_obj'],"class-edito : $in");
}


est-ce que ça fonctionne ça? J'avais eu des soucis une fois avec les booléens et depuis j'utilise plus trop donc je passe par des chemins parallèles...
 
WRInaute accro
erestrebian a dit:
if($_SESSION['debug']==1){
array_push($GLOBALS['tab_req_obj'],"class-edito-bis : $in");
}
est-ce que ça fonctionne ça? J'avais eu des soucis une fois avec les booléens et depuis j'utilise plus trop donc je passe par des chemins parallèles...
SQL-Query-Objet['6'] = class-edito : SELECT * FROM `editeur` WHERE id=5704
SQL-Query-Objet['7'] = class-edito-bis : SELECT * FROM `editeur` WHERE id=5704
SQL-Query-Objet['8'] = class-edito : UPDATE editeur SET hit = hit+1 WHERE id=5704
SQL-Query-Objet['9'] = class-edito-bis : UPDATE editeur SET hit = hit+1 WHERE id=5704

j'ai ajouté ton code en plus du mien, il provoque un béguéement ce qui m'indique que tu as raison !
Il faux donc (a priori dans les méthodes) tester explicitement l'égalité a true.

PHP5 / erestrebian -> erestrebian vainqueur par KO Merci :wink:
 
Discussions similaires
Haut