Newsgroup: it.comp.www.php
Titolo: [PHP]: perdita di alcune variabili di sessione

Ciao a tutti,
Durante l'esecuzione di uno script tra quelli che generano le pagine
del mio sito, vengono perdute alcune variabili di sessione, mentre
altre variabili di sessione vengono mantenute normalmente.
il codice che setta le variabili è abbastanza banale :
if (!isset($_SESSION[var]))
{
$_SESSION[var] = $_GET[var];
}
è analogo a codice usato più volte , e con successo, su altre pagine
del sito.
ovviamente esiste la chiamata a
session_start();
ed è posizionata all'inizio dello script, e le variabili in questione
non vengono resetate, o almeno, NON intenzionalmente!! :p
Inoltre il server aruba , che ospita il sito, è l'unico che genera
questo problema, lo stesso script testato su altri server di prova ,
funziona egregiamente senza dare alcun problema.
C'è modo di risolvere l'inconveniente? e se sì, come?
UN GRAZIE ANTICIPATO A TUTTI!! ;)

 }
Intanto metti gli apici a var: $_SESSION['var'] e $_GET['var']

 
non so se č il reale problema ma anche nei riferimenti del manuale mettono
che l'uso č:
$_SESSION["var"]=$_GET["var"]
$_SESSION['var']=$_GET['var']
Puň essere il mancato uso degli apici comprometta il tutto..
ciao!

No, avevo già provato, sia con apici singoli, che doppi..
inoltre se fosse questo il problema, non fungerebbe nemmeno sugli altri
server... :(
grazie cmq! ;)

 }
Naturalmente passi var tramite la url, vero?
fai uno script cosi:
<?php
session_start();
?>
<pre>
<?
print_r($_SESSION);
?>
</pre>
Chiudi il browser (e tutti i suoi componenti) e apri due finestre (o due 
tab se usi mozilla) e in una esegui la tua applicazione, nella seconda 
richiami lo script che ti ho fornito.
Poi vedi che succede ad ogni richiesta http con dei reload dello script.
Nel caso facci sapere
Ciao
-- 
Spoken: How much is that gorilla in the window?
Take our advice, At any price, A gorilla like Magilla is mighty nice.
Gorilla, Magilla Gorilla for sale

avevo fatto anche questo: mi son dimenticato di scriverlo nel primo
post, pardon!!!
la prima volta che viene richiamata la pagina, vengono settate le vars
di sessione attraverso le vars che ottengo con  $_GET,
stampo $_SESSION al termine dello script e contiene tutte le vars che
volevo settare.
se faccio un refresh della pagina, continuo a trovarle tutte con
print_r($_SESSION);
se tolgo le vars dalla url, e quindi dal $_GET, sperando di averle
ancora in $_SESSION, queste spariscono anche da $_SESSION
non capisco perchè, visto che faccio la stessa cosa anche in altri
script dello stesso sito, e funge anche sul server aruba.
spero di non essermi dimenticato altre info utili
thanks a lot!

 
Fai degli include? Altre operazioni sulle sessioni?
Comunque segui il consiglio di utilizzare gli apici.
Nel caso posta il codice.



:Provate a guardare gli ingredienti del famoso Labello che si usa per
:le labbra screpolate: Butirrospermum Parkii (sperma di maiale).

ci sono degli include, ma non toccano le sessioni.
il codice, ti ripeto , funziona correttamente sul mio server di prova e
su quello di casa.. postarlo è difficile perchè anche questo script
è un include e fa riferimento ad altri include..
credo che sia un problema di buffering, anche perchè mi rimangono
settate delle vars di sessione impostate prima di quelle incriminate, e
altre vars di sessione impostate dopo.
quelle incriminate invece spariscono, insieme a quella che gestisce
l'autenticazione.
per fare un esempio, è come se settassi:
$_SESSION["var1"] = 001;
$_SESSION["var2"] = 002;
$_SESSION["var3"] = 003;
$_SESSION["var4"] = 004;
$_SESSION["var5"] = 005;
e alla fine dello script , dando print_r($_SESSION);
mi ritrovo solo con
array(
[var1] => 001
[var2] => 002
[var5] => 005
)
inoltre spulciando il forum di aruba ho letto che è pieno di gente che
ha lo stesso problema... ovviamente tutti senza una spiegazione
palusibile!
mah!!
accetto qualsiasi suggerimento!! :p

 
Mi viene solo da consigliarti di documentarti sulle configurazioni delle 
sessioni nel php.ini (usa phpinfo per vederne i settaggi su aruba).
Sorry, ciao


 funziona egregiamente senza dare alcun problema.
Può darsi che aruba sia configurato con register_globals=on (deprecato).
In questo caso se tu usi delle variabili locali con lo stesso nome delle
variabili di sessione...
-- 
"Deep in the human unconscious is a pervasive need for a
logical universe that makes sense. But the real universe is
one step beyond logic."
From "The sayings of Muad'Dib" by the Princess Irulan
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

no, non uso MAI le variabili globali, faccio sempre riferimento ai
relativi array...
e mi annoto i nomi delle vars che uso mentre programmo, proprio per non
incorrere in questo inconveniente...
mi sento di escludere questo caso..  :D

Ho verificato una cosa stranissima, sempre a proposito di questo
problema delle sessioni.
Per disperazione ho testato lo script con internet explorer, e , magia,
funziona tranquilamente, ANCHE sul server su cui con firefox non
funziona.
Adesso mi chiedo: esistono differenze sostanziali nella gestione delle
sessioni tra mozilla/firefox e explorer???
e perchè lo stesso script, visitato con lo stesso firefox dallo stesso
client, funziona su un server e su un altro no???



Senza vederlo posso tirare a indovinare: Firefox ha i cookie disabilitati
e funziona solo sul secondo server, dove usi il trans-sid.
Poi bisognerebbe vedere se davvero fai le stesse identiche operazioni con
IE e Firefox e sui due siti.
Leonardo
-- 
Avere studiato senza mettere in pratica e' inutile;
mettere in pratica senza avere studiato e' pericoloso.
                                                - Conphpucio

no, cookie abilitati su entrambi i browser e trans-sid su nessuno dei
server!
e phpinfo(); mostra impostazioni pressochè identiche.
nessuna differenza di procedura nelle operazioni.
e cmq se fosse un errore di impostazione del server, non mi troverei in
questa situazione:
1) SERVER DI SVILUPPO: lo script funziona sia con explorer che con
firefox
2) SERVER DI TEST (lo uso per testare prima di pubblicare sul server
del dominio) lo script funziona sia con explorer che con firefox
3) SERVER DEL SITO : lo script funziona solo con explorer. mentre con
firefox si perde alcune variabili di sessione.
le operazioni che eseguo sono sempre le stesse. e oltretutto sono
analoghe alle operazioni che eseguo in altri script, che vengono
eseguiti correttamente.



nessuna differenza di procedura nelle operazioni.
Saremmo di fronte ad un miracolo, e io ai miracoli credo poco. Guarda le
differenze fra i due phpinfo, se sono relative a qualcosa che "potrebbe"
entrarci.
Controlla anche le impostazioni del server, se puoi.
Le macchine sono quasi sempre ;-) deterministiche: la diversita' di quel
che ottieni deve dipendere o da un diverso input (e dici di no) o da una
differenza nelle impostazioni.
SE non c'e' neppure questa si comincera' a pensare a cose esoteriche (ad
es., differenze nel comportamento di versioni diverse di PHP, server Web
o anche TCP/IP, nel senso di reverse proxy/accelerator o simili). Li' ti
cominciano a servire utility come HTTPDumper (una specie di sniffer HTTP
- in realta' e' un proxy locale) oppure proprio uno sniffer, per vedere,
di due "dump" di sessioni diversi, dov'e' che la cosa inizia ad andare a
donnine.


Ho trovato l'errore!
Un javascript, inserito da un mio collega, settava una variabile 'id'
con lo stesso nome che io avevo utilizzato in GET...
con explorer era ininfluente, con firefox evidentemente qualcosa andava
storto e le due variabili con lo stesso nome interferivano tra loro.
Cmq eliminando il javascript, il codice php funge a meraviglia.
Per far convivere le due cose è bastato rinominare la variabile che
utilizzavo in PHP.
Invio la soluzione, in modo da agevolare chi incontrasse lo stesso
problema:
NON FATE MAI TOCCARE NIENTE AI VOSTRI COLLEGHI! :p
grazie ancora per il supporto,
H

con explorer era ininfluente
Questa cosa mi preoccupa abbastanza :-)
Puoi mica descriverne i dettagli? O postare quel codice Javascript?


Allora, è successo questo:
- il mio collega ha impostato un logger php che viene richiamato da uno
scriptino in javascript nella home del sito sul server su cui
pubblichiamo. Nella home, la chiamata allo script dichiarava una
variabile in GET , dandole il nome id e assegnadole un qualche valore ,
tipo:
logger.php?id=home
- a mia volta, avevo dichiarato una variabile $id che passavo in
GET allo script mad_script.php, il quale viene incluso nella home così
index.php?includi=mad_script.php&id=13
dentro mad_script.php dichiaravo
if (!isset($_SESSION[id])
$_SESSION[id] = $_GET[id];
per non passarmi costantemente in GET il valore di id che rimane
costante anche alle successive chiamate di mad_script.php
Alla prima esecuzione andava bene,  poi però al termine dello script
arrivava la chiamata al javascript che a sua volta richiamava
logger.php?id=home
se il browser apparteneva alla famiglia dei mozilla
(ecco perchè lo script con explorer funzionava sempre!)
dentro logger.php , la variabile $_SESSION[id] veniva cancellata e alla
seconda esecuzione il mio script la risettava uguale a $_GET[id] che
però stavolta era vuoto, perchè io non lo stavo più passando
(contando che fosse già nella sessione)
le altre var di sessione che perdevo, venivano settate tramite una
query
che funzionava solo se era valorizzata $_SESSION[id]
Insomma era un bel circolo vizioso!
Invece sul mio server casalingo e sul server di test, tutto funzionava
bene perchè semplicemente mancavano la chiamata al javascript, il
javascript e logger.php :p

(ecco perchè lo script con explorer funzionava sempre!)
Ah, OK. Pensavo fosse qualche bug esoterico del javascript su Mozilla,
o forse su Explorer; mi rassicuri :-)
