OVH Cloud OVH Cloud

$_SESSION['foo']==$foo

4 réponses
Avatar
kurius
Bonjour

J'ai eu la surprise de constater que dans certains cas
l'utilisation d'une variable $foo dans un script pouvait écraser une variable $_SESSION['foo'] sans qu'a aucun moment $_SESSION['foo']=$foo;

Quelqu'un a t'il déja vu ça ? s'il y a une explication rationelle, j'aimerais bien la connaître

4 réponses

Avatar
Bruno Desthuilliers
kurius wrote:
J'ai eu la surprise de constater que dans certains cas
l'utilisation d'une variable $foo dans un script pouvait
écraser une variable $_SESSION['foo'] sans qu'a aucun moment
$_SESSION['foo']=$foo;




Je n'en n'ai pas trouvé confirmation dans la doc (j'ai peut-être mal
cherché...), mais je pense que la réponse est probablement quelque part
dans le php.ini, du côté de la directive 'register_global'.

Bruno

Avatar
HeReTiC
De ce que je comprend de ces cas, c'est normal. J'utilise toujours la
fonction session_register("foo") pour conserver la syntaxe $foo pour
accéder à la variable, c'est à dire éviter d'avoir à toujours écrire
$_SESSION['foo']. Dans mes scripts, je commence la session et c'est
évident qu'écrire $foo revient à écrire $_SESSION['foo'].

En fin de compte, oui j'ai déjà vu ça et je crois que c'est normal.

kurius wrote:
Bonjour

J'ai eu la surprise de constater que dans certains cas
l'utilisation d'une variable $foo dans un script pouvait écraser une variable $_SESSION['foo'] sans qu'a aucun moment $_SESSION['foo']=$foo;

Quelqu'un a t'il déja vu ça ? s'il y a une explication rationelle, j'aimerais bien la connaître


--
Merci de votre temps,

*Vincent Fouquereau*
Webmaster - The Crash Site
*http://www.TheCrashSite.com*

Avatar
Geoffrey Audebert
$_SESSION['foo'] est une manière "sécurisé" d'appeler la variable $foo en
vérifiant que la variable vient bien d'une session. Aisin si tu fais un :
<?
session_start();
echo _SESSION['foo'];
?>

ou alors un simple :
<?
session_start();
echo $foo;
?>

Tu obtiendras exactement la même chose (en dehors des pbs de sécurité bien
sûr.
en supposant que par la session tu améne la valeur 1 dans ta variable foo,
la page va effectivement voir que la cariable "session" foo existe et ainsi
si tu fais après un $foo=2; quand tu fera un echo $_SESSION['foo']; tu auras
2 qui s'affichera.
Dans l'ordre ça fera :
* variable foo vient d'une session = VRAI
* affichage de la variable foo : 2 et non plus 1

En espérant avoir été assez clair

Gargan21
Avatar
RDX
C'est à cause du register_global

si tu as register_global=1
alors tu n'a pas besoin d'indiquer ou se trouve ta variable

du coups
$_POST['var'] c'est la même variable que $var
$_GET['var'] c'est la même variable que $var
$_SESSION['var'] c'est la même variable que $var

par contre si tu veux modifier une variable session tu dois utiliser
$_SESSION ou session_register()


--
RDX

"kurius" a écrit dans le message de news:

Bonjour

J'ai eu la surprise de constater que dans certains cas
l'utilisation d'une variable $foo dans un script pouvait écraser une
variable $_SESSION['foo'] sans qu'a aucun moment $_SESSION['foo']=$foo;


Quelqu'un a t'il déja vu ça ? s'il y a une explication rationelle,
j'aimerais bien la connaître