• User

    come tenere traccia della chiusura delle sessioni

    ciao a tutti,
    ho la necessità di sapere quando le sessioni degli utenti loggati al sito sono aperte e quando chiuse, in modo da tenere traccia sul db l inizio e la fine di una sessione. Cosi che tramiete query posso sapere quali utenti sono loggati al momento nel sito. Ovviamente l'inizio sessione è facile da settare...ma come si setta la fine???


  • User Attivo

    Non ho mai fatto una cosa del genere... mai io proverei a testare l'oggetto $_SESSION con tutti gli ID che ritieni ancora validi.
    Come fai a sapere se sono validi? Beh controlli su db quelli aperti e non ancora segnati come chiusi.
    Se non li trovi in $_SESSION vuol dire che PHP li ha chiusi.
    Tieni cmq presente che se non uccidi espressamete tu la sessione (ma si potrà fare con unset?) dovrai attendere il timeout prima di capire che l'utente se ne sia andato.

    :fumato:


  • User Attivo

    Ho scritto una cavolata... 🙂
    per recuperare una sessione devi usare session_id(<nome sessione>)

    Per sapere se una sessione è ancora valida puoi usare un trucco.
    Quando crei la sessione crei al suo interno una variabile che ti fa da segnale.
    Quando controlli se la sessione è ancora valida, devi verificare che esista ancora la variabile di prima.

    :fumato:


  • User

    grazie per la risposta...però una volta che setti una variabile su session, come fai a controllare per tutte le sessioni aperte? non penso che esiste un comando per vedere tutti gli id delle sessioni aperte


  • User Attivo

    Potresti seguire un flusso fatto così...

    • session_id() valorizzato? sì, allora cerco se c'è nel db...
      ...non lo trovo allora nuova sessione, metto la variabile segnale in $_SESSION
    • ciclo tra gli id sessione su db ancora validi (su db), controllo se c'è la variabile... non la trovo allora segno su db sessione chiusa

    Un po' criptico, ma spero ti sia d'aiuto.


  • User

    credo di aver risolto in altro modo piu semplice. devi fare in modo che ogni volta che l'utente cambia pagina, si aggiorna il time nel db... ed ogni volta che aggiorni la pagina, devi far fare un controllo sul db ed eliminare tutti i record dove il time non viene aggiornato dopo tipo ( standard ) 15 minuti ... almeno questo è il metodo piu usato.