Domanda

Attualmente, nel mio script php, dopo che un utente ha effettuato l'accesso, ho archiviato session_login = 1. Ma ho un problema. Ho l'abitudine di usare firefox, multi-tab (credo che la maggior parte delle persone e tutte le app per browser web di oggi abbiano la funzione multi-tab). Ho chiuso la scheda che ha la sessione, ma non ho chiuso il browser. Dopo poche ore, torno sulla stessa pagina che mi richiede di accedere, ma non lo fa. Non mi richiede di accedere nuovamente (penso che si chiami " Sessione "). Esiste comunque la disconnessione dell'utente se chiude la scheda invece chiude il browser ??

Al momento ho 1 soluzione, calcio d'inizio inattivo. Ma ho una conoscenza molto limitata della cosa data / ora in php, quindi questa sarebbe l'ultima opzione. Volevo sapere, c'è qualcos'altro che posso fare, oltre a usare il tempo minimo?

È stato utile?

Soluzione

PHP ha un modo semplice per impostare la durata di una sessione prima del timeout:

session_set_cookie_params(3600); // make it expire after 1 hour

Basta passare il numero di secondi che si desidera durare nella sessione (nell'esempio, 1 ora = 60 minuti = 3600 secondi).

http://us2.php.net /manual/en/function.session-set-cookie-params.php

Altri suggerimenti

Un cookie di sessione viene cancellato dal browser solo quando la sessione del browser è chiusa (ovvero quando il browser è chiuso): da qui il nome. Se si desidera cancellare la sessione poco dopo la chiusura della scheda, è possibile impostare un tempo di scadenza molto breve sul cookie (circa 5 minuti) e archiviarlo nel database. Quindi, attiva una funzione javascript sulla pagina web che chiama un file dal tuo server ogni minuto: questo file quindi "aggiorna" la voce cookie / database per i prossimi cinque minuti. Se poi lasciano il tuo sito per più di cinque minuti, la sessione viene invalidata.

Puoi anche aggiungere Javascript " onunload " funzione che rileva se hanno chiuso la pagina web o se sono andati su un'altra pagina: puoi aggiungere un hook su questo per chiamare un "motore di ricerca". funzione, tuttavia, dovrai verificare che non siano appena passati a un'altra pagina del tuo sito e che in realtà non siano aperte due pagine del tuo sito in due schede.

Credo che l'opzione che stai cercando sia l'impostazione per la scadenza del cookie di sessione. Non ricordo il comando PHP per questo, ma dovresti essere in grado di impostare la scadenza del cookie alla chiusura della finestra.

Ecco la documentazione della sessione PHP: http: //us2.php. net / manuale / it / book.session.php

Forse potresti usare session_write_close ()?

C'è un commento sulla documentazione di PHP per la funzione session_destroy che potrebbe esserti utile: http://us2.php.net/manual/en/function.session-destroy.php#71889

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top