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:
  1. <?php  
  2.     session_start();  
  3.       
  4.     $v="valami";  
  5.     $_SESSION["v"]="";  
  6.       
  7.     echo "A v értéke: ".$v;  
  8. ?>  
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):
  1. <?php  
  2.     session_start();  
  3.       
  4.         $_SESSION["v"]="";  
  5.     $v="valami";  
  6.       
  7.     echo "A v értéke: ".$v;  
  8. ?>  
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:
  1. <?php  
  2. $v="valami";  
  3. $_SESSION["v"]="";  
Az ugyanaz, mintha ezt írtam volna:
  1. <?php  
  2. $v="valami";  
  3. $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....