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 :
- if ( isset($HTTP_POST_VARS['tab_X']) && !isset($HTTP_SESSION_VARS['ses_X']) )
- {
- session_start();
- $HTTP_SESSION_VARS['ses_X'] = $HTTP_POST_VARS['tab_X'];
- }
|
Pb :
- ensuite j'ai besoin de faire un test sur ces 2 valeurs dans un autres fichier php...
Code :
- session_start();
- if ( !isset($HTTP_SESSION_VARS['ses_X']) && !isset($HTTP_POST_VARS['pc_time_offset']) )
- {
- ...
- }
|
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 :
- Line 257, column 137: cannot generate system identifier for general entity "PHPSESSID"
- ...sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c16729950
- ^
- Line 257, column 137: general entity "PHPSESSID" not defined and no default entity (explain...).
- ...sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c16729950
- ^
- Line 257, column 146: reference to entity "PHPSESSID" for which no system identifier could be generated
- ...538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c1672995071" class
- ^
- Line 257, column 136: entity was defined here
- ...?sid=7a066538d628e686602929f735c7a25a&PHPSESSID=aaad86eae79ec469fa6e7c1672995
- ^
|
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 :
- $flag=2 // peut être égal à 1, 2, 3, etc.
- while ( ... )
- {
- ...
- fct_x();
- ...
- }
|
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