Session Globals et classes

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


zeb
WRInaute accro
WRInaute accro
 
Messages: 1186
Inscription: Dim Déc 05, 2004 19:47

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 accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

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: 1186
Inscription: Dim Déc 05, 2004 19:47

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 impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

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: 1186
Inscription: Dim Déc 05, 2004 19:47

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:


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités