Session Globals et classes

zeb
WRInaute accro
WRInaute accro
 
Messages: 3283
Inscription: 5 Déc 2004

Session Globals et classes

Message le Jeu Juin 12, 2008 9:22

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: Tout sélectionner
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: Tout sélectionner
if(isset($GLOBALS['uneautrevariable'])){ $GLOBALS['uneautrevariable']=trucmachin; }


Mais j'aimerais comprendre le pourquoi du comment.

Merci


Bacteries
WRInaute passionné
WRInaute passionné
 
Messages: 1369
Inscription: 27 Mai 2004

Message le Jeu Juin 12, 2008 9:46

T'as démarrer ta session?

Que te dit un print_r($_SESSION); ?

zeb
WRInaute accro
WRInaute accro
 
Messages: 3283
Inscription: 5 Déc 2004

Message le Jeu Juin 12, 2008 12:48

Bacteries a écrit: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: Tout sélectionner
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: Tout sélectionner
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 ...


erestrebian
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 460
Inscription: 15 Juin 2007

Message le Jeu Juin 12, 2008 13:24

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...

zeb
WRInaute accro
WRInaute accro
 
Messages: 3283
Inscription: 5 Déc 2004

Message le Jeu Juin 12, 2008 19:42

erestrebian a écrit: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:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: salva et 0 invités