Newsgroup: it.comp.www.php
Titolo: [Lungo] Unset su una variabile $_SESSION con register globals su on

La documentazione suggerisce di non utilizzare  session_unregister,
session_register etc.. nel caso si faccia uso dell'array  $_SESSION  e
suggerisce di usare unset per desettare la variabile di sessione.
unset ($_SESSION['miavariabile']);
La cosa in effetti è comprensibile ed è pure più pratica.
Non mi dà alcun problema con register globals su off... ma se cerco di far
girare lo stesso script non register globals su on non mi desetta la
variabile.. o meglio.. me la desetta per quello script..
Se faccio
unset ($_SESSION['miavariabile']);
echo ($_SESSION['miavariabile']);  // non esce niente
ma con un print_r ($_SESSION) me la ritrovo.
Sparisce se faccio...
unset ($_SESSION['miavariabile']);
unset ($miavariabile);
oppure se ripiego su un vecchio e deprecabile session_unregister..
session_unregister('miavariabile');
Sono andato a vedere bene se fossi il solo ad avere qualche problemino.. e
oltre ad un po' di problemi analoghi in qualche post usenet.. nei commenti
degli utenti della documentazione
http://it.php.net/manual/it/function.session-unregister.php
ho trovato due commenti in proposito:
***********
from the documentation...
Note: If $_SESSION (or $HTTP_SESSION_VARS for PHP 4.0.6 or less) is used,
use unset() to unregister a session variable.
In fact, unset doesn't have the expected behavior, it only unsets the
variable for the execution of a particular script. Use session_unregister
to completely erase the variable from the session.
***********
session_unregister is still needed if register_globals is on.
***********
Ora.. o questi due sono impediti come me.. oppure c'è qualcosa che non
funziona :)
Il problema è questo.. attualmente l'hosting su cui va a finire il sito ha
register globals on.. ed è probabile che fra un po', passando alla 4.2.x lo
mettano su off (sui loro virtual dedicated servers è già così).
Volevo sapere quale potrebbe essere secondo voi la soluzione migliore nella
scrittura del codice... o se c'è una soluzione al problema che ho presentato
(magari sbaglio qualcosa io)... anche perchè io vorrei scriverlo nel modo
più pulito possibile.. ovvero senza l'utilizzo di funzioni sconsigliate.
Il problema è che deve girare per un po' con register_globals on (ho fatto
un tentativo includendo ogni volta un ini_set  per quanto riguarda
register_globals ma, pur verificando che cambia con ini_get, non ottengo il
risultato sperato) e non vorrei dover modificare tutto un paio di volte a
causa di questa cosa.
Che dite.. torno al vecchio session_unregister alla faccia della
documentazione (tra l'altro non ho provato se questo magari ha comportamenti
anomali con register globals off)?
Spero che la sfera magica di Jurgen non sia più in riparazione...
Grazie per l'attenzione.

 variabile.. o meglio.. me la desetta per quello script..
Mi confermate almeno se esiste questo problema oppure se è un qualche mio
errore?
Scusate per il disturbo.. prometto che non posterò più sull'argomento se non
ci saranno risposte: questa cosa mi incuriosiva ma non voglio tenere in vita
un 3d inutile.

Grazie per l'attenzione.
bho.. magari wrappa..
function session_unset($sessvarname)
{
	unset($GLOBALS['_SESSION']["$sessvarname"]);
	if(version_check('4.2.0'))
		unset($GLOBALS["$sessvarname"])
}


wrote:

ehrm magari con if(!ini_get("register_globals"))
cmq strano..