ugrás a tartalomhoz

Összekeverednek a session és normál változók

Anonymous · 2005. Dec. 4. (V), 10.23
Sziasztok!

Egy érdekes problémával találkoztam. Kivonatos formában:

<?php
	session_start();
	
	$v="valami";
	$_SESSION["v"]="";
	
	echo "A v értéke: ".$v;
?>
A sessionid-t cookieban tárolom. A probléma a következő: bejön az oldal, a $v értéke megjelenik szépen ("valami"). Azonban, ha frissítek egyet, akkor már a kimeneten nem jelenik meg a $v értéke. De ha törlöm a cookiet (és ugye ezzel új sessionid generálódik), akkor újra rendesen működik.
Localhoston jól működik (register_globals off), viszont a tárhelyen nem (register_globals on). A probléma csak akkor jelentkezik, ha azonos nevű session és normál változót használok!

Természetesen megoldhatnám így (is):

<?php
	session_start();
	
        $_SESSION["v"]="";
	$v="valami";
	
	echo "A v értéke: ".$v;
?>
Viszont ez esetben $_SESSION["v"] értéke is "valami" lesz. Feltételezem, hogy ez a register_globals miatt van. De hogyan tudom ezt kiküszöbölni? (A register_globals értékét NEM tudom megváltoztatni sehogy sem, mert nem saját szerver és sem ini_set-tel, sem .htaccess-szel nem lehet megváltoztatni sajnos.)
 
1

Mas nevet valassz

Grandmaster · 2005. Dec. 4. (V), 11.26
Mar a hozzaszolasodban is ott van a megoldas. Ertelemszeruen masik valtozonevet adj! :)
2

<Nincs cím>

Anonymous · 2005. Dec. 4. (V), 12.39
Hát ja, az a legegyszerűbb. Közben rájöttem arra is, hogy miért van ez az egész. Mivel a register_globals be van kapcsolva, ezért ha van egy ilyen:

<?php
$v="valami";
$_SESSION["v"]="";
Az ugyanaz, mintha ezt írtam volna:

<?php
$v="valami";
$v="";
Mivel a register_globals on.

Valamint, az első oldal letöltődéskor azért működik helyesen (mintha registert_globals off lenne), mert ugye a sessionid-t cookieban helyezem el. Viszont a cookiek csak a következő lap letöltődéskor "élnek", tehát az 1.nél még jó. Ha helyesek az ismereteim....