[RoLUG] variabili di sessione PHP
Chiarello Cristian
ciarez@inwind.it
Sab 13 Mar 2004 20:19:35 CET
Dario Rigolin ha scritto:
> On Thursday 11 March 2004 17:08, Chiarello Cristian wrote:
>
>>Per caso avreste un esempio?
>>Ho letto il manuale e per la versione che ho io (4.2.2) dice di usare la
>>variabile $_SESSION: da quel che ho capito io, è visibile sempre per
>>tutta la sessione.
>
>
> E' visibile (nel senso che è definita) sempre. E' nella tipologia di variabili
> dette "superglobal" perchè sono presenti in tutti gli scope: metodi, funzioni
> e classi.
>
>
>>Con sessione io intendo, con definizione bruta :), la serie di
>>opreazioni di un utente dal browser dal momento in cui si collega ad un
>>sito al momento in cui esce (meglio ancora se chiude il browser :)) ).
>
>
> Queste definizione è SBAGLIATA!!! Sessione è semplicemente uno storage di
> dati persistenti legati alla connessione che un'istanza di un browser
> effettura verso la tua applicazione PHP. Session è server side!
>
>
>>Quindi, io ho fatto cosi':
>>
>>global $var_glob;
>>$var_glob = new miooggetto();
>>$_SESSION['nomevar'] = $varglob;
>>
>>dove miooggetto e' una classe da me definita.
>
>
> Fino a qua funziona ma devi fare session_start() prima oppure mettere
> "session_autostart=on" su PHP.INI. Se non lo fai non andrà mai perchè non hai
> mai detto a PHP di partire. Non capisco perchè fai global se non sei dentro
> una funzione e vuoi vedere una variabile all'esterno non serve.
> L'assegnamento in PHP è una copia quindi la tua ultima riga copia l'oggetto
> dentro l'hashmap $_SESSION.
>
>
>>La vede solo nello script come se fosse locale, poi va persa :(
>>Qlc suggerimento? (anche senza var di sessione, basta che la variabile
>>la possa usare anche quando passo da una pagina ad un'altra)
>>Ciao!
>
>
> Credo di averti messo nella strada giusta. Se parti dagli esempi del PHP base
> dovresti avere qualcosa che funziona.
>
> Piccola nota sul fatto che stai mettendo una "CLASSE" in sessione. La sessione
> serializza tutti i dati che le dai su un file per metterli al sicuro. C'è da
> stare attenti quando metti in sessioni classi e non dati base: devi
> ricordarti di includere la definizione della classe prima di fare
> session_start(). session_start() va invocato in ogni pagina che vuole
> accedere a $_SESSION.
>
> Ciao!
>
Grazie Dario per avermi indicato la retta via :)
A furia di prove c'ero arrivato: il problema era che non mettevo
session_start() all'inizio del codice.
Con definizione di classe, intendi include("miaclasse.php") dove
miaclasse è il file che ne contiene il codice?
Se è cosi' l'ho gia' messa in testa a tutti i file php del progetto che
ora funziona :) e adesso so anche il perchè.
Leggo saltuariamente la mail in questi giorni perchè ho mezza bronchite
e non riesco a cavarmela di dosso :(
Ciao a tutti!
Maggiori informazioni sulla lista
RoLUG