Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    23

    Cancellare una sessione alla chiusura del browser

    Salve a tutti, volevo fare una domanda.

    Per scelta di programmazione ho deciso di memorizzare le sessioni in un database.

    il problema che mi trovo ad affrontare è che se un utente loggato chiude il browser e poi tenta di accedere nuovamente al sito con i suoi dati di accesso, (prima che la sessione sia scaduta) si trovera nell'impossibilità di accedere al sito, risultando in realtà l'utente gia con una sessione attiva nel database.

    Quindi vorrei fare in modo che al momento della chiusura del browser, la sessione venga cancellata nel database, ma non so come fare per associare alla chiusura del browser la chiamata alla funzione di cancellazione della sessione.

    Ho letto qualcosa in merito all'apertura di una nuova pagina (tramite javascript) che contenga lo script php per la cancellazione della sessione, ma non ni è sembrata una soluzione ottimale, visti i numerosi svantaggi.

    Spero di aver chiarito il mio problema .

    Grazie a presto

  2. #2
    Inserisci nel database la data e l'identificativo di sessione.

    Ogni volta che lo script intercetta la sessione e quindi l'utente, aggiorna la data nel database.

    Se esistono sessioni più vecchie di esempio 30 minuti, le cancelli.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    23
    Grazie della risposta, ma forse non mi sono spiegato bene.

    Qeullo che dici te il mio script gia lo fa.

    Il mio problema è che non permettendo un login con i dati di un utente gia connesso,
    (inquanto non volgio correre il rischio di avere due utenti loggati con gli stessi dati)

    se non cancello la sessione di quell'utente alla chiusura del suo browser, quando l'utente cercherà di rientrare prima che la sessione sia scaduta, non potrà accedere con i suoi dati di identificazione.

    Per questo motivo ho bisogno di cancellare la sessione registrata nel DB alla chiusura del browser.


    Grazie

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da AndreaDV
    Grazie della risposta, ma forse non mi sono spiegato bene.

    Qeullo che dici te il mio script gia lo fa.

    Il mio problema è che non permettendo un login con i dati di un utente gia connesso,
    (inquanto non volgio correre il rischio di avere due utenti loggati con gli stessi dati)

    se non cancello la sessione di quell'utente alla chiusura del suo browser, quando l'utente cercherà di rientrare prima che la sessione sia scaduta, non potrà accedere con i suoi dati di identificazione.

    Per questo motivo ho bisogno di cancellare la sessione registrata nel DB alla chiusura del browser.


    Grazie
    Puoi fare una chiamata ajax sull'evento onunload, ma non ti salva dai casi in cui la connessione si chiuda improvvisamente e l'utente chiuda dopo il browser.

    Se n'era parlato nei giorni scorsi di un problema del genere, solo che non lo trovo :P

    ciao

  5. #5
    Io sconsiglio l'uso di javascript/ajax o cmq funzioni di pulizia all'uscita in operazioni critiche, è sufficiente che avvenga un errore nel browser o per un qualche motivo non esegua il codice di uscita che l'utente non potrà più rientrare

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da mem
    Io sconsiglio l'uso di javascript/ajax o cmq funzioni di pulizia all'uscita in operazioni critiche, è sufficiente che avvenga un errore nel browser o per un qualche motivo non esegua il codice di uscita che l'utente non potrà più rientrare
    si infatti..

    ciao

  7. #7
    Io farei (faccio) in questo modo:

    al login, *PRIMA* di registrare la sessione faccio una query sul database cancellando la sessione precedente dell'utente che non aveva effettuato il logout.

    Ad esempio, se l'utente con id_user 10 si logga io faccio
    DELETE FROM tabella WHERE id_user = '10'.

    In questo modo evito che ci siano più sessioni dello stesso utente e non mi sbatto a dover cancellare le righe per evitare errori nel login.

    Ovviamente cancello sempre le sessioni non movimentate da un certo numero di minuti.

    Francesco
    Ciao!

  8. #8
    Così però la sessione viene sempre eliminata e 2 persone possono benissmo loggare contemporaneamente

  9. #9
    Ciao.
    Suggerirei l'uso
    di session_set_save_handler()
    senza bisogno di scoprire tutte le volte l'acqua calda.
    Un buon tutorial .

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  10. #10
    Originariamente inviato da mem
    Così però la sessione viene sempre eliminata e 2 persone possono benissmo loggare contemporaneamente
    Non con lo stesso username!
    Infatti, io cancello la precedente sessione dell'utente con l'id che si sta loggando adesso... mica le sessioni degli altri utenti...

    WHERE id_user = '10'

    Ciao!

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.