$GLOBALS et session

$GLOBALS et session - PHP - Programmation

Marsh Posté le 30-01-2007 à 11:06:27    

bonjour
 
dans mon appli j'utilise le tableau $GLOBALS
et des session
 
Or bien qu'a aucun endroit dans mon code il n'y a de lien explicite entre $GLOBALS et les session
il faut que je supprimer la session en cours pour que les modifications apportées a mon tableau $GLOBALS
soit prises en compte
 
est ce normal ?

Reply

Marsh Posté le 30-01-2007 à 11:06:27   

Reply

Marsh Posté le 30-01-2007 à 12:11:03    

$GLOBALS est une variable tableau réservée de PHP et je ne sais pas si elle est accessible en écriture ; perso, je l'ai toujours utilisée en lecture seule.
Pour manipuler tes session, t'utilises bien la variable globale $_SESSION?

Reply

Marsh Posté le 30-01-2007 à 14:07:42    

oui c'est un tableau réservé par PHP que j'utilise en écriture.
oui j'utilise bien les session avec le tableau lui aussi réservé $_SESSION
 
une idée ?

Reply

Marsh Posté le 30-01-2007 à 14:27:51    

dans ton php.ini, t'as bien mis register_globals à off?

Reply

Marsh Posté le 30-01-2007 à 14:31:38    

Je vais peut être poser une question conne, mais pourquoi utiliser le tableau $globals, alors que tu as une session ?

Reply

Marsh Posté le 30-01-2007 à 14:32:18    

montre nous ton code ça sera plus parlant
 
sinon vérifie register_globals, ça peut porter à confusion si activé (voir doc session)

Reply

Marsh Posté le 30-01-2007 à 14:37:36    

une piste ? :
 
Si vous enregistrez une variable globale dans une fonction, vous devez vous assurer de la rendre globale , avec global ou le tableau  GLOBALS[] , ou bien utiliser un des tableaux de session $_SESSION ou $HTTP_SESSION_VARS.
 

Reply

Marsh Posté le 30-01-2007 à 14:46:31    

Chani_t > Il ne faut pas tout mélanger.
$_GLOBALS est interne à une exécution de script donnée. D'ailleur, quand les scripts sont bien fait, je ne vois aucun cas où il soit utile de manipuler directement le tableau $_GLOBALS : il y a le mot clé "global " qui est fait pour ça.
$_SESSION sert à faire transiter des valeurs entre plusieurs pages sans être obligé de modifier toutes les adresses et sans rendre l'ordre des pages obliguatoire.
 
Comme tu vois les deux n'ont aucun rapport entre eux.
 
jokaritaff > Qu'est ce qui t'as poussé à manipuler directement le tableau $_GLOBALS ?

Reply

Marsh Posté le 30-01-2007 à 15:13:07    

Ba c'est bien ce que je pensais... je ne vois pas l'utilité de la chose...
 
Soit tu déclare tes variable en global, auquel cas, en effet elles apparaissent dans ton tableau $GLOBALS.. mais encore une fois je ne vois pas l'utilité
 
Soit éventuellement tu force la modification de ta variable par les fonction grace au &. (style pointeur en C).
 
Note bien que ce que j'ai marqué dans mon dernier post provient de la doc PHP ;)

Reply

Marsh Posté le 30-01-2007 à 15:48:57    

omega2 a écrit :

Chani_t > Il ne faut pas tout mélanger.
$_GLOBALS est interne à une exécution de script donnée. D'ailleur, quand les scripts sont bien fait, je ne vois aucun cas où il soit utile de manipuler directement le tableau $_GLOBALS : il y a le mot clé "global " qui est fait pour ça.
$_SESSION sert à faire transiter des valeurs entre plusieurs pages sans être obligé de modifier toutes les adresses et sans rendre l'ordre des pages obliguatoire.
 
Comme tu vois les deux n'ont aucun rapport entre eux.
 
jokaritaff > Qu'est ce qui t'as poussé à manipuler directement le tableau $_GLOBALS ?


 
$GLOBALS, je m'en sers parfois quand j'utilise dans une fonction des variables de langue (cf appli multi-langue, où y'a une variable par traduction des chaîne de caractères de l'IHM). Ca évite d'utiliser global et de devoir énumérer toutes les variables qu'on utilise dans la fonction...
 
Et il me semble que $HTTP_SESSION_VARS est dépréciée...

Reply

Marsh Posté le 30-01-2007 à 15:48:57   

Reply

Marsh Posté le 30-01-2007 à 15:53:08    

rufo a écrit :

Et il me semble que $HTTP_SESSION_VARS est dépréciée...


 
En effet, mais ça reste fonctionnel. A partir de PHP 4 il me semble, il était préférable d'utiliser $_SESSION à la place.

Reply

Marsh Posté le 30-01-2007 à 15:55:43    

Pour du multi langue, je trouve

Code :
  1. function trad($id_texte) {
  2. global $lang_fr;
  3. return $lang_fr[$id_texte];
  4. }


Plus propre que de trimbaler 200 variables dans les variables globales.
 
PS : Evidement, je n'utilise pas de code aussi simplifié dans la gestion des langue de mon site mais c'est pour montrer le principe.

Reply

Marsh Posté le 30-01-2007 à 16:19:37    

Perso, je suis pas trop chaud pour mettre toutes les variables de traduction d'une langue dans un seul tableau. A tord ou à raison, je trouve qu'un tableau va consommer plus de mémoire que plein de petites variables. En +, comme on a rarement besoin de toutes les traductions de toute l'appli d'un coup pour une page donnée, j'ai tendance à répartir dans plusieurs fichiers mes traduction d'une langue et je fais des includes de ceux dont j'ai vraiment besoin (en général, je fais un répertoire par langue et un fichier pour chaque module de l'appli). Mais bon, c'est pas là qu'on doit faire un débat sur la gestion multi-langues des applis php :)

Reply

Marsh Posté le 30-01-2007 à 16:24:03    

ok pour tout ca
seulement je tiens a respecter la version actuelle de l'application.
Que ca soit bien ou pas d'utiliser $GLOBALS ce n'est pas le sujet.

Reply

Marsh Posté le 30-01-2007 à 17:05:17    

certes, mais on attend toujours un bout de code à se mettre sous la dent, nous, pour pouvoir t'aider...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed