Page 1 sur 1

Variable de session qui disparaît mystérieusement

Posté : 18 avr. 2010, 14:31
par Stef
Hi every one,

J'ai écrit le petit code que voici (il est inclus dans un autre fichier qui contient session_start(); !):
<?php
// Switch Background
$bg = null;
$vid = array('0', '1', '2', '3', '4', '5', '6', '7');

if (isset($_GET['set_bg']) && is_numeric($_GET['set_bg']) && in_array($_GET['set_bg'], $vid)) {

	if ($_GET['set_bg'] == 0) {

		session_destroy();

	}
	else {

		$_SESSION['bg'] = $_GET['set_bg'];

	}

}
if (isset($_SESSION['bg'])) {

	$bg = 'background: #1A1A1A url(\'./img/bg_body'.$_SESSION['bg'].'.jpg\');';

}
else {

	$bg = 'background-color: #333333;';

}
?>
Pour utiliser ce code je fais simplement:
<a href="./index.php?set_bg=X">...</a>

<!-- Où "X" est une valeur de 0 à 7 -->
En local ça marche comme je veux, à savoir que la variable de session perdure d'une page à l'autre une fois qu'une valeur lui a été attribuée, mais dès que je passe en ligne ça ne marche plus... Au chargement de la page dont l'url contient la variable get la variable de session existe, mais si je change de page elle disparaît.

Mystère!

J'ai testé en attribuant une valeur à une autre variable de session via un formulaire en post, et là ça fonctionne normalement, ma variable de session demeure d'une page à l'autre...

Pourquoi, mais alors pourquoi, avec mon code ça foire? Merci bien par avance!

Les bras m'en tombent, j'ai cherché de tous les côtes mais je vois pas de quoi ça vient.

----------------------
EDIT:

en fait elle disparait pas, mais elle ne contient pas la bonne valeur!

Après appel de mon code elle contient ce que je lui ai demandé, par ex.background: #1A1A1A url('./img/bg_body2.jpg'); , mais en changeant de page elle contient background-color: #333333;

Ce qui me surprend grandement vu qu'à aucun moment mon code n'est censé attribué la seconde valeur à ma variable de session! Soit la variable est détruite soit elle contient une valeur sous cette forme background: #1A1A1A url('./img/bg_bodyX.jpg'); mais jamais background-color: #333333;

Le mystère s'épaissit...

Re: Variable de session qui disparaît mystérieusement

Posté : 18 avr. 2010, 15:11
par Stef
Bon, trouvé...

Ca venait du nom de la variable $bg...

J'ai changé son nom et c'est ok.

Je ne sais pas pourquoi php identifie cette variable $bg à $_SESSION['bg']...

En tous cas ça marche.

Re: Variable de session qui disparaît mystérieusement

Posté : 18 avr. 2010, 20:51
par Calimero
Hello Stef :)
Je ne sais pas pourquoi php identifie cette variable $bg à $_SESSION['bg']...
Un peu tard, mais la réponse est par ici : http://php.net/manual/fr/security.globals.php

Ça peut être une bonne idée de désactiver cette directive, si tu le peux. Il est possible aussi qu'elle saute lors de tes futures montées en version de PHP...

Re: Variable de session qui disparaît mystérieusement

Posté : 18 avr. 2010, 21:47
par Stef
Hello Stef :)
Je ne sais pas pourquoi php identifie cette variable $bg à $_SESSION['bg']...
Un peu tard, mais la réponse est par ici : http://php.net/manual/fr/security.globals.php

Ça peut être une bonne idée de désactiver cette directive, si tu le peux. Il est possible aussi qu'elle saute lors de tes futures montées en version de PHP...
Zut, c'est à on chez moi (ovh, en mutualisé).

Merci bien pour l'info, j'avais déjà entendu parler de ça sans jamais vraiment comprendre les incidences... Là je comprends bien mieux.

Merci beaucoup Calim! : )