Pb avec des variables globales entre 2 fichiers

Pb avec des variables globales entre 2 fichiers - PHP - Programmation

Marsh Posté le 19-08-2003 à 19:35:36    

Voilà.
J'ai 2 pb de variables globales entre 2 fichiers php d'un forum phpBB.
 
1er cas, j'ai une valeur X récupérée d'un tableau par $HTTP_POST_VARS['tab_X'] que je dois ensuite stocker pour toute la durée de connexion au forum.
Le passage par la BD est trop lourd, j'ai déjà mis en oeuvre l'utilisation d'un cookie de session mais ils peuvent être désactivés, donc j'ai besoin d'utiliser une autre méthode.
A priori, il ne reste que les variables de session mais c'est là que j'ai un pb. Le renseignement de la variable se passe comme ça...

Code :
  1. if ( isset($HTTP_POST_VARS['tab_X']) && !isset($HTTP_SESSION_VARS['ses_X']) )
  2. {
  3. session_start();
  4. $HTTP_SESSION_VARS['ses_X'] = $HTTP_POST_VARS['tab_X'];
  5. }


Pb :
- ensuite j'ai besoin de faire un test sur ces 2 valeurs dans un autres fichier php...

Code :
  1. session_start();
  2. if ( !isset($HTTP_SESSION_VARS['ses_X']) && !isset($HTTP_POST_VARS['pc_time_offset']) )
  3. {
  4. ...
  5. }


Mais si je ne mets pas "session_start();" avant le test, il est toujours positif comme si "$HTTP_SESSION_VARS['ses_X']" était toujours vide même lorsqu'il ne l'est pas :(
Question 1 : C'est normal ? Il faut un "session_start();" avant chaque lecture de la variable ?
 
- par ailleurs quand je test ma page avec le validateur W3C, j'ai des 80 erreurs qui tournent TOUTES autour de ça...

Code :
  1. Line 257, column 137: cannot generate system identifier for general entity "PHPSESSID"
  2.   ...sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c16729950
  3.                                           ^
  4. Line 257, column 137: general entity "PHPSESSID" not defined and no default entity (explain...).
  5.   ...sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c16729950
  6.                                           ^
  7. Line 257, column 146: reference to entity "PHPSESSID" for which no system identifier could be generated
  8.   ...538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c1672995071" class
  9.                                           ^
  10. Line 257, column 136: entity was defined here
  11.   ...?sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c1672995
  12.                                           ^


Alors que j'en ai 0 si je ne mets pas de ligne "session_start();" qui fait disparaître "&PHPSESSID=aaad86eae79ec469fa6e7c1672995071" dans l'url.
 
Question 2 : Donc, il semble que j'en ai besoin pour lire la variable, mais que si je la mette ça ne soit pas conforme :(
Où est l'erreur ?
 
 
2ème pb, j'ai besoin de rendre un flag visible par d'autres fichiers php le temps d'une boucle.
 
Exemple, un fichier toto.php qui doit exécuter cette boucle faisant appel à une fonction d'un autre fichier...

Code :
  1. $flag=2     // peut être égal à 1, 2, 3, etc.
  2. while ( ... )
  3. {
  4.    ...
  5.    fct_x();
  6.    ...
  7. }


Et la fct_x() dans cet autre fichier a aussi besoin de connaître la valeur de "$flag".
 
J'ai donc besoin de lui passer l'info le plus simplement possible SANS EN FAIRE UN PARAMETRE DE LA FONCTION !!! (ça c'est pas possible pour d'autres raisons)
Le recours à la base de donnée est là aussi exclu car c'est beaucoup trop lourd pour une utilisation aussi fugitive de cette variable (sa valeur n'a pas besoin d'être stockée sur le long terme).
 
Question 3 : Donc ici aussi, est-ce que les variables de sessions sont la bonne méthode car cette variable aura une durée de vie beaucoup plus courte qu'une session, ou est-ce qu'il y en a d'autres ?
 
Merci d'avance :)


Message édité par -ET- le 19-08-2003 à 19:43:26
Reply

Marsh Posté le 19-08-2003 à 19:35:36   

Reply

Marsh Posté le 19-08-2003 à 19:42:11    

Pour le premier problème: session_start obligatoire à chaque début de page qui utlise des sessions.
Pour le & qui plante avec le w3c, il faut le remplacer par & (cf php.ini de ton serveur pour le cas du PHPSESSID qui se met tous seul)

Reply

Marsh Posté le 19-08-2003 à 19:44:35    

RiderCrazy a écrit :

Pour le premier problème: session_start obligatoire à chaque début de page qui utlise des sessions.
Pour le & qui plante avec le w3c, il faut le remplacer par & (cf php.ini de ton serveur pour le cas du PHPSESSID qui se met tous seul)


Merci beaucoup de ces 2 premières infos :)  
 
Pb pour le &amp je suis hébergé chez Planet-work donc comment je remédie à ce pb ?


Message édité par -ET- le 19-08-2003 à 19:46:03
Reply

Marsh Posté le 20-08-2003 à 02:00:32    

-ET- a écrit :


Pb pour le & je suis hébergé chez Planet-work donc comment je remédie à ce pb ?


C'est bon j'ai trouvé.
 
Il suffit de placer une ligne...

Code :
  1. ini_set('arg_separator.output', '&');


...avant chaque session_start() dans mes fichiers php puisque je n'ai pas accès à leur php.ini .
 
Ne reste donc plus que le dernier pb : comment transmettre la valeur de $flag à la fonction sans le passer en paramètre car en réalité cette fonction est une fonction standard phpBB utilisée de nombreuses autre fois par d'autre pages php et je ne veux pas changer aussi tous les appels à cette fct.

Reply

Sujets relatifs:

Leave a Replay

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