PDA

View Full Version : [PHP]Time out sessione e textbox


Gregor
04-12-2008, 09:19
Ho impostato il time out della sessione a 3 min.
Ho una pagina in cui c'è una textbox grazie alla quale scrivere e inviare del testo.
Poichè spesso non bastano 3 min per scrivere il testo, quando va in time out la sessione perdo tutto quello che avevo scritto e...non è il massimo della vita ;)
Come posso bypassare questo problema?
Se faccio un refresh automatico della pagina prima che scada la sessione, come posso "immagazzinare" quanto sto scrivendo nella textbox e ritrovarmelo a refresh avvenuto?
Idee?

Grazie.

Dânêl
04-12-2008, 15:51
Ciao. Credo che l'unica soluzione ( a parte aumentare il timeout della sessione coniugato ad una gestione personale delle sessioni ) sia proprio il refresh della pagina al quale però va unito del javascript oppure sfruttando l'AJAX.

L'unico modo per far sapere al php il contenuto della textbox è fare il submit (automatico con il js) del form cosi da ricreare la pagina reinserendo quanto già scritto.
Non conosco bene ne js ne AJAX per cui non ti posso essere maggiormente d'aiuto, ma spero di esserti stato utile


PS un'altra soluzione potrebbe essere l'utilizzo di un frame...ma non credo sia molto consigliato/consigliabile , ma comunque dovrebbe funzionare

Gregor
04-12-2008, 17:07
Il refresh della pagina in automatico effettivamente non posso farlo perchè metti che mentre sto scrivendo mi si aggiorna la pagina...non è il massimo.
Al momento ho risolto con javascript, così:

Prima del pulsnate invia ho inserito due pulsanti un "copy" e un "paste". Prima di inviare il messaggio, quindi anche ben oltre il limite del timeout mediante il "copy" (pulsnate+js) copio negli appunti quanto ho scritto, si seleziona il testo in automatico così da far vedere l'operazione effettuata... Così se dovesse scadere la sessione, mi basta riloggarmi e mediante il pulsante "paste" (anche qui c'è js sotto) incollo nella textbox quanto salvato precedentemente.

Soluzione veloce e che fa al caso mio.

Cosa ne pensate? Si può fare in modo più elegante?

Devo dire che non l'ho ancora sottoposto a chi dovrà usarlo, ma non credo ci siano problemi.

Dânêl
04-12-2008, 22:01
alquanto ingegnosa ( e macchinosa) la tua soluzione però funzionale.

Quello che intendevo io, anche se effettivamente non l'ho specificato, era un "refresh" temporizzato della pagina tramite js, in modo tale da ricaricare la pagina prima dei 3 minuti, ma passando il contenuto della textbox a caricamento completato.

In pratica dovresti fare un submit automatico del form con il js e poi lato php capire se è stato un submit automatico oppure da parte dell'utente in modo da salvare le informazioni oppure ricaricare la pagina assegnando il contenuto della textbox.
Per individuare i duce casi potresti magari utilizzare un campo nascosto al quale viene assegnato un valore ad hoc a seconda che il submit sia automatico o meno.
Es. inserisci un campo nascosto il cui valore è 1. Se interviene la funzione js di "refresh" prima di inviare il form cambia il valore di quel campo in 0. Basta un if lato server ed il gioco è praticamente fatto

Torav
04-12-2008, 23:14
potresti fare una cosa malsana ma che potrebbe funzionare (forse?):
mandi con ajax una richiesta ad una pagina php che refresha la sessione ogni 2 minuti (o una roba del genere)

Gregor
05-12-2008, 11:02
Danel la tua soluzione mi pare un pò più difficile da attuare.
E poi, cosa succede se mentre sto scrivendo si refresha la pagina? Penso che possa spiazzare un "evento" del genere.

Invece col copy&paste devo solo ricordarmi di fare clic su copy prima di inviare il messaggio, ovviamente se è un emssaggio lungo ;)

Ajax invece non l'ho mai usato.

Gregor
12-12-2008, 07:27
Si poteva anche prolungare la sessione così:


session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '600');