Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180

    Come far scadere la sessione dopo x secondi

    Salve ragazzi, avrei bisogno di un consiglio. Ho una piccola pagina p.php con dei campi testuali e dei menù a tendina. Per arrivare alla pagina p.php si passa prima da una semplice login che prende verifica le info necessarie su di un file txt. A login avvenuta, voglio che la pagina p.php scada dopo 5 minuti esatti.

    Sul web ho trovato qualche linea di codice che dovrebbe servire a tale scopo

    Codice PHP:
    <? include("check.php");  ?><?php
    if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 3600)) { // l'ultima richiesta è stata effettuata un ora fa
        
    session_unset(); session_destroy();
    }
    $_SESSION['LAST_ACTIVITY'] = time(); // aggiorna ultima attività
     
    if (!isset($_SESSION['CREATED'])) {$_SESSION['CREATED'] = time();}
     else if (
    time() - $_SESSION['CREATED'] > 3600) {// la sessione è iniziata più di un ora fa
        
    session_regenerate_id(true);   
    //cambia l'ID della sessione per la corrente sessione e invalida il vecchio ID
        
    $_SESSION['CREATED'] = time();  //a questo punto riparti con il tempo


    }?>
    ma modificando i 3600s in 300 secondi, questo non funziona a dovere infatti la pagina non scade dopo 5 minuti. Ho visto che è possible anche modificare un valore all'interno del php.ini però non capisco se la modifica è propedeutica al codice su indicato o meno. Mi aiutate a capirci qualcosa?

  2. #2
    il codice riportato che problema ti dà?
    dunque potresti anche fare così, segnare su una tabella data/ora login o refresh e lanciare una funzione javascript con richiesta asincrona ogni secondo o ogni tot secondi, se il tempo segnato nella tabella è differente di 5 minuti dall'orario attuale cancelli i dati di sessione

    comunque al codice sopra riportato dove dai
    session_unset
    (); session_destroy();

    metterei anche $_session = array()

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Ti spiego meglio. La mia reale necessità è quella di fare l'auto logout per l'utente dopo cinque minuti. Questo perché sulla pagina che sto creando, più persone si loggano con un solo nome utente per avere accesso esclusivo ad un form ed evitare che le stesse lavorino contemporaneamente a tale form quindi quando l'utente A che si logga con credenziali C, l'utente B non deve poter accedere sempre con credenziali C fin quando l'utente A non si slogga (o autoslogga dopo 5 minuti).

    Edit: considera che non ho un db che mi gira sotto

    Quote Originariamente inviata da francesko_c Visualizza il messaggio
    il codice riportato che problema ti dà?
    dunque potresti anche fare così, segnare su una tabella data/ora login o refresh e lanciare una funzione javascript con richiesta asincrona ogni secondo o ogni tot secondi, se il tempo segnato nella tabella è differente di 5 minuti dall'orario attuale cancelli i dati di sessione

    comunque al codice sopra riportato dove dai
    session_unset
    (); session_destroy();

    metterei anche $_session = array()
    Ultima modifica di deb463is; 27-03-2014 a 13:01

  4. #4
    se vuoi fare questo devi comunque segnare (scrivere) in una tabella chi si è autenticato, e fare comunque i test con javascript / Ajax, e, al momento del login controllare se in questa tabella c'è ancora l'utente con le credenziali XYZ

    ti ho fatto un riassunto, spiegarti in poche parole esattamente tutto nei minimi particolari richiederebbe una giornata

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Ok. Una maniera più rozza che mi viene in mente è creare un file in fase di login, quando un'altro utente cerca di fare la login, se il file esiste, la login viene impedita altrimenti va a buon fine. Naturalmente il tasto logout o l'autologout cancella il file. Che ne pensi? Questo per evitare di utilizzare un db.

  6. #6
    mh... in maniera molto rozza si
    dovresti comunque segnare la data nel file oppure prendere la data di creazione del file
    con mysql fai tutto in maniera più "simpatica"

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Senti ed uno script che fa il conto alla rovescia del timeout? Con js?

    Edit: eccolo!

    <Scripts> <script type="text/javascript">
    //Added for Auto LogOFF after 10 min




    function Timeout(){
    var t = setTimeout("RedirectToLogout()", 10*1000);
    }
    function RedirectToLogout(){
    var path = "logout.php";
    window.navigate(path);
    }
    </script>
    <script>
    window.onload=Timeout;
    </script>


    </Scripts>

    Ultima modifica di deb463is; 27-03-2014 a 14:04

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Quote Originariamente inviata da deb463is Visualizza il messaggio
    Senti ed uno script che fa il conto alla rovescia del timeout? Con js?

    Edit: eccolo!
    Peccato, funziona solo con internet explorer. Con chrome o con i browser di android non va. Come mai?

  9. #9
    quello script fa semplicemente il refresh, il punto è questo, molto probabilmente uno non può ogni 5 minuti inserire user e pass, ecco perché una volta fatto il login scrivi su una tabella data e ora, e ogni volta che apre una pagina vai a riaggiornare l'orario
    però quello che vuoi fare non è riepilogabile con 2 righe sul forum ci vuole tempo per spiegarlo e realizzarlo

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    180
    Cerco di rispiegarmi. Ti assicuro che la storia dei 5 minuti per l'autologout deve essere così, vedila come un sistema in cui più persone entrano con lo stesso account per lavorare alla stessa pagina, eseguendo operazioni che prendono massimo 30 secondi. Lo script di autologout serve ad assicurare che, se qualcuno si dimentica aperta la pagina e non esegue il logout, lo stesso viene eseguito in automatico permettendo agli altri di accedervi liberamente. Potresti darmi un consiglio sul linguaggio con cui creare lo script per essere compatibile sia ai browser dei pc, sia dagli android, sia dagli iphone?

    Quote Originariamente inviata da francesko_c Visualizza il messaggio
    quello script fa semplicemente il refresh, il punto è questo, molto probabilmente uno non può ogni 5 minuti inserire user e pass, ecco perché una volta fatto il login scrivi su una tabella data e ora, e ogni volta che apre una pagina vai a riaggiornare l'orario
    però quello che vuoi fare non è riepilogabile con 2 righe sul forum ci vuole tempo per spiegarlo e realizzarlo
    Ultima modifica di deb463is; 27-03-2014 a 17:03

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.