Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Problema login

  1. #1

    Problema login

    Ciao a tutti,

    sto realizzando un login. Quello che vorrei fare è che se un'utente è già loggato nella mia applicazione e magari un collega che ha le sue stesse credenziali di accesso cerca di entrare, l'applicazione non permette a quest'ultimo di collegarsi.
    Qualcuno sa dirmi se c'è un modo per farlo?
    Ho pensato con il controllo sui clienti on line :master:
    Grazie a tutti!

  2. #2
    In fase di login salva nel DB un hash con IP ed user agent dell'utente e la data/ora dell'ultima "interazione" con il sito.
    Sempre in fase di login, verifica se l'ultimoa data/ora di "interazione" rientra nel timeout della sessione (es 20 minuti). In caso affermativo, permetti il login solo se i due hash corrispondono.

    In questo modo se un'altro utente cerca di accedere con IP/User Agent diversi, non ci riuscirà.

  3. #3
    data/ora dell'ultima "interazione" con il sito.
    intendi dire che in ogni pagina devo fare un'update sul db aggiornando la data/ora dell'ultima iterazione?

  4. #4
    Puoi usare il DB oppure un "archivio" separato (es. touch() su un file)

  5. #5
    Ok.
    Come faccio invece a verificare se la mia data rientra nel timeout della sessione?
    Io ho una data pari a "09-04-2009 15:05:11" e un timeout di 10 minuti

  6. #6

  7. #7
    Ho fatto cosi..
    Prima di tutto eseguo questa query:

    codice:
    "SELECT TIME_TO_SEC(TIMEDIFF(now(),(select date_iteraction from iteractions
    where hash = '".$hashcalcolato."')));"
    Quindi già verifico la correttezza dell'hash.
    Se mi ritorna un valore verifico che quest'ultimo non superi la durata del timeout di sessione nel mio caso 600 secondi.
    Ti sembra corretto come procedimento?

  8. #8
    Mi correggo.
    Prima di tutto mi sono ricavato l'iterazione più recente.
    Successivamente ho fatto questo controllo:

    Codice PHP:
    $timeElapsed $db->Query("SELECT hash, TIME_TO_SEC(TIMEDIFF(now(),(select date_iteraction from iteractions where id = '".iterazionePiuRecente."'))) from iteractions;");  
        .
        .
        .
    if(
    $array['date_iteraction'] <= 600){     
        if(
    $array['hash'] == $hashCalcolato){
                     
    //login consentito            
          
    }
         else{
             
    //login non consentito.Utente già collegato             
          
    }
     }
     else{
         
    // ???         

    giusto?
    il problema è l'ultmo else. Ovvero in caso l'ultima iterazione è maggiore del timeout della sessione come devo comportarmi?

  9. #9
    up

  10. #10
    up

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.