Quindi creerò una funzionalità per un'applicazione php che effettua le seguenti operazioni:
- Crea una sessione che scade dopo 30 minuti.
- Dopo 30 minuti, se non c'è attività dell'utente nell'applicazione (inclusa la digitazione su una casella di testo, spostando un mouse su tutta la pagina), la sessione verrà distrutta e il sistema si reindirizzerà a una pagina di disconnessione (logout.php ). Quello che intendo per tastiera / mouse è solo specifico per il sistema, se il sistema è aperto mentre sto facendo altre cose al di fuori del sistema, il sistema dovrebbe considerarlo idolo.
- Se la sessione ha momenti da vivere (circa 15 secondi) e c'è attività dell'utente, la durata della sessione sarà estesa a 30 minuti. Il motivo è che se un utente sta inserendo informazioni critiche, sarebbe molto scomodo registrarlo prima di inviare il modulo. Questo è il motivo per cui i movimenti della tastiera e del mouse dovrebbero essere rilevati dal sistema.
Ho trovato due soluzioni possibili, ma non ne sono soddisfatto.
Prima soluzione
Utilizzerò quasi javascript per tutto.
- Gestisci la sessione o il cookie (non sono sicuro che javascript riconosca le sessioni lato server)
- Rileva attività tastiera / mouse
- Estendi la durata della sessione / cookie
- Reindirizza a logout.php per distruggere la sessione
Credo che questa soluzione sia estremamente negativa. Credo che ci siano modi per manipolare il codice javascript per cambiarlo (per impedire il reindirizzamento a logout.php, per esempio). Cioè, sto facendo un processo che dovrebbe essere fatto sul server.
Seconda soluzione
- usa javascript per rilevare l'attività di tastiera / mouse come prima.
- 15 secondi prima dei 30 minuti, dovrò inviare una richiesta Ajax a una pagina php. La richiesta Ajax contiene le informazioni relative all'esistenza di attività dell'utente durante questo periodo.
- Ora questa particolare pagina php gestisce le informazioni inviate da ajax. Se viene rilevata l'attività dell'utente, php estende solo la durata della sessione. Altrimenti deve reindirizzare a logout.php tramite la funzione .done di ajax o attraverso altri mezzi.
Non penso che i processi che ho descritto sopra siano buone soluzioni. In particolare l'uso pesante di javascript per fare cose lato server. Il mio problema è che non riesco a trovare un modo per rilevare i movimenti della tastiera / mouse utilizzando php. Tutto ciò che ho trovato su come farlo è usando javascript (comprensibilmente visto che le azioni dell'utente sono fatte nel browser e non nel server).
Come devo procedere? Quale sarebbe la soluzione migliore e più sicura?