Originariamente inviato da piero.mac
Non saprei che dirti. Credo poco probabile il caso che tu nella stessa pagina metta il valore in una variabile e questa poi ti modifichi un array. Forse nel passaggio da una pagina ad un altra potrebbe sovrascrivere la variabile passata con register_globals ON con un altro dato di var superglobale.

Per es.:

da form invii <input type=text name=id value=2>

in $_SESSION[id] = 10

Nella pagina di arrivo potresti trovare $_SESSION[id] = 2, perche' il dato $id (like superglobale) ha sovrascritto l'indice id di SESSION. Uguale come se usassi $_REQUEST. Una volta dichiarati globali puoi utilizzare direttamente la variabile senza estrarla dall'array. Pero' nel tuo caso bisognerebbe vedere tutto il codice.
Forse potrebbe anche dipendere da questo, perchè ho il form con un campo hidden di nome id, ma quando invio il form il valore di $_SESSION ancora contiene il suo valore iniziale, lo scambio diciamo avviene quando vado ad assegnare alla variabile $id un valore, in sostanza lo posso evitare perchè è una variabile temporale che mi serve per costruire una stringa, quindi possso utilizzare anche un'altro nome.
Forse potrebbe aver ragione bubu, perchè in locale ho il register_globals a off, invece il server dove appoggio il sito sta ad on, in locale funziona tutto perfettamente, ma online mi da questo problema.