Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    167

    Impedire il login multiplo ad un'area riservata

    Salve a tutti.
    Sto sviluppando un'applicazione web a cui hanno accesso più utenti, anche simultaneamente: quello che voglio impedire è che un utente possa collegarsi due o più volte dalla stessa macchina, o anche da macchine differenti.
    Ho fatto un po' di ricerche su Internet e devo dire che è un problema abbastanza sentito, anche se non comunissimo. Ho visto anche le relative soluzioni, ma nessuna di esse mi soddisfava pienamente quindi ho pensato di farne una mia ispirandomi a quanto avevo già visto.
    La mia idea fa uso del database, in particolare di una tabella che chiamo "Sessioni".
    Tale tabella è composta dai seguenti campi: Username e Timestamp.
    Username contiene lo username dell'utente loggato e timestamp l'indicazione temporale dell'ultima azione da lui fatta nel sistema: se non compie azioni per più di cinque minuti la sessione la considero scaduta.
    Per impedire il login multiplo mi è venuta in mente questa serie di controlli:
    codice:
    1) L'utente immette i suoi dati ed avvia la procedura di login.
    2) Dopo la procedura di login, e in tutte le pagine dell'applicazione web, avvio una query che cancella tutte le sessioni più vecchie di cinque minuti dal momento attuale: "DELETE FROM Sessioni WHERE Timestamp < \"" . time() - 300 . "\";".
    3) Avvio una query sul database del tipo "SELECT COUNT(Username) FROM Sessioni WHERE Username = \"{$Username}\" AND Timestamp >= \"" . time() - 300 . "\";"
    - Se la query mi restituisce uno vuol dire che l'utente è già collegato e quindi gli impedisco il login facendolo tornare alla pagina di login.
    - Se la query mi restituisce zero vuol dire che l'utente non ha già loggato e quindi registro la sua sessione nel database e poi lo faccio accedere all'applicazione normalmente.
    4) Se un utente loggato accede a qualsiasi parte del sistema quando la sua sessione è scaduta lo ridirigo alla pagina di login.
    Che ne dite, potrebbe funzionare così? Che cambiamenti mi consigliate di apportare?

  2. #2
    Utilizzando ajax puoi gestire l'entrata e soprattutto l'uscita in modo istantaneo, senza attendere 5 minuti, ma ad ogni modo il tuo ragionamento è corretto.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    167
    Grazie per la risposta.
    Mi sapresti dire come mai, in molti esempi sui siti specializzati, mettono anche l'id della sessione? Che bisogno c'è?

  4. #4

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 © 2024 vBulletin Solutions, Inc. All rights reserved.