file di sessione non si aggiornano

Emanuele.Basilicata

Nuovo Utente
30 Ott 2013
21
0
1
Buongiono,

ho verificato che nel server remoto (ma anche in locale) il file associato alla sessione non cambia quando distruggo la sessione ne se utilizzo session_regenerate_id().

Ho un abbonamento x un servizo di hosting quindi monitorando con filezilla il mio spazio web sul host remoto (dove ho reindirizzato con session.save_path la cartella dei file sessione) vedo il file generato da session_start() che poi sparisce quando chiudo la sessione; quando però rilancio il programma (anche dopo che sono uscito dal browser) mi ricrea il file sessione con lo stesso nome !!!!

All'interno dei programmi ho inserito anche la funzione session_regenerate_id() ma sembra venga ignorata. Dico questo perchè ho inserito la visualizzazione delle 2 varianti (prima e dopo session_regenerate_id ) e sono uguali !!!.

Sinceramente ho fatto anche un piccolo programmino (con le stesse specifiche che utilizzo nel programma principale) per testare (in locale) session_regenerate_id(). Se lo lancio da solo funziona: cambia id (li ho visualizzati) e anche i file cambiano nome. Quando chiudo e riapro il browser e rilancio il programmino, mi prende l'ultimo id e rigenera quello nuovo e nella cartella dei file di sessione, è sparito il vecchio file e trovo solo quello con l'id rigenerato. (per me tutto ok).

Certamente il programmino è fine a se stesso mentre il programma ha difatto le 3 pagine classiche: una contenente la form, una controlla i dati passati dalla form, una visualizza i risultati. La session-regenerate_id è in quest'ultima.

Qualche suggerimento ?

Grazie.
 
forse è un problema di persistenza della cache che affligge alcuni vecchi browser come IE

prova così


PHP:
session_cache_limiter ('private, must-revalidate');
session_start();
 
forse è un problema di persistenza della cache che affligge alcuni vecchi browser come IE

prova così


PHP:
session_cache_limiter ('private, must-revalidate');
session_start();

OK PROVERO' ti anticipo però che il browser che utilizzo è firefox aggiornato a 25.0 (sinceramente non ho provato con gli altri browser ma lo farò)

Grazie.

Emanuele
 
è allora ti anticipò che non funzionerà :D
cmq prova, non si mai...

In effetti non ha funzionato ne con firefox ne con altri browser.

A mio avviso è una questione di output: mi spiego.

Ho un pò revisionato i 3 programmi (form, elaborazione, visualizzazione), ho costruito un file dove ho inserito i settaggi x php_ini e le chiamate a session_name(), session start(), session_regenerate_id(), ho inserito questo file in ciascuna delle 3 pagine richiamandolo tramite require_once(....) (ho provato anche trasformando il file in funzione e richiamare quest'ultima nelle 3 pagine).
In queste pagine ho inserito anche un echo delle variabili che memorizzo dopo session_start() e dopo session_regenerate_id().

Risultato:
nella prima pagina che pubblico le 2 variabili sono diverse,
nella 2^ che è legata all'action della form, sono uguali,
nellA 3^ che richiamo tramite un js sono uguali.

Conclusione: la prima volta session_regenerate_id() funziona, nelle seguenti pagine no.

Ora vorrei provare ad inserire nel file ob_start() e ob_end_flush (non ho capito bene il funzionamento) ma è un parametro che lavora sull'output.

Saluti.

Emanuele
 
In effetti non ha funzionato ne con firefox ne con altri browser.

A mio avviso è una questione di output: mi spiego.

Ho un pò revisionato i 3 programmi (form, elaborazione, visualizzazione), ho costruito un file dove ho inserito i settaggi x php_ini e le chiamate a session_name(), session start(), session_regenerate_id(), ho inserito questo file in ciascuna delle 3 pagine richiamandolo tramite require_once(....) (ho provato anche trasformando il file in funzione e richiamare quest'ultima nelle 3 pagine).
In queste pagine ho inserito anche un echo delle variabili che memorizzo dopo session_start() e dopo session_regenerate_id().

Risultato:
nella prima pagina che pubblico le 2 variabili sono diverse,
nella 2^ che è legata all'action della form, sono uguali,
nellA 3^ che richiamo tramite un js sono uguali.

Conclusione: la prima volta session_regenerate_id() funziona, nelle seguenti pagine no.

Ora vorrei provare ad inserire nel file ob_start() e ob_end_flush (non ho capito bene il funzionamento) ma è un parametro che lavora sull'output.

Saluti.

Emanuele

Aggiungo:

le modifiche apportate mi permettono di risolvere il problema iniziale cioè che all'apertura del browser la sessione prendeva l'ultimo ID anche se utilizzavo session_destroy. Ora anche se esco dal browser senza aver distrutto la sessione, la prima pagina (proprio perchè sesion_regenerate_id() funziona) l'ID cambia. Il file della sesione precedente viene riscritto col nuovo id. OK.

Mi resta da capire perchè nelle pagine seguenti session_regenerate_id() non funziona ovvero non aggiorna l'ID. ......(ho provayo ob_start e ob_end_flush ma hanno dato esito negativo).....

Grazie per i suggerimenti.

Emanuele
 

Discussioni simili