Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144

    gestione login con uno stato in db

    Salve, mi potete aiutare? allora il mio problema è semplice.
    Devo gestire i login di alcuni utenti ma vorrei che ogni utente possa connettersi solo uno per volta. Per farmi capire ora come l'ho fatto se io con lo stesso nome utente provo a fare login da 2 o più computer ovviamente mi si connette perchè uso le sessioni. Io volevo implementare un campo stato in un db corrispondente al record dell'utente connesso. Questo stato prenderà valore 1 appena effettua il login. Appena poi, l'utente, effettua il logout questo campo viene settato a zero. Il problema è che se l'utente chiude il browser o non effettua il logout il campo resta a 1 e quando prova a riconnettersi risulta già connesso. come ovviare a questo problema?

    aiutatemi... grazie mille..

  2. #2
    Vai sul semplice: non mettere 1 nel campo db ma il timestamp dell'ultima azione dell'utente, così dopo tot tempo di inattività puoi consentire l'accesso ad altri.
    Esempio: mi collego, il db salva l'ora dell'accesso, cambio pagina e il db salva il timestamp, così per tot volte, poi chiudo browser. Dopo 15 minuti di inattività rientro da un altro terminale. Sono passati 15 minuti quindi il sistema mi autorizza ad entrare.

    Con questo sistema non devi nemmeno salvarti l'ip
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Grazie per la risposta. Quindi il timestamp si aggiorna automaticamente ad ogni accesso a quel record?

  4. #4
    Fallo aggiornare ad ogni pagina visitata dall'utente loggiato, così quando esce o smette la navigazione per tot minuti è libero di ricollegarsi
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    scusa la domanda banale: ma il timestamp si aggiorna solo se modifico un campo nel db con un valore diverso. come faccio a farlo aggiornare?

  6. #6
    Alt: il timestamp non come campo database, per quello usa un INT 11 caratteri.
    Fai time() per inserire il timestamp, una query ad ogni caricamento di pagina se l'utente è collegato
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    ok il time mi rende una cosa del genere: 1358766131 .
    e come calcolo 15 minuti per esempio?

  8. #8
    Con la funzione "date()"
    Estrai tutto quello che vuoi dal timestamp, lo trovo mille volte più versatile delle date, le date estese non le uso da anni!

    Il timestamp è un numero. Calcola 15 minuti in secondi (il metodo poiù semplice ma meno veloce) poi fai una sottrazione:

    $tempo_passato= time() - $time_db;

    if($tempo_passato > 900) echo "Più di 15 minuti passati";
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Grazie mille.
    quindi se non ho capito male il controllo dell'ora lo metto solo al momento del login, mentre l'aggiornamento del time in tutte le pagine dove può svolgere operazioni l'utente giusto?

  10. #10
    Direi che sei sul pezzo (hai capito bene cosa intendevo)

    Ovviamente dovrai fare un controllo sul tempo di AFK (away from keyboard) dell'utente, così da calcolare al suo ritorno se la, diciamo, sessione è ancora valida.

    Usare la sessione di per se con scadenza non è un'ottima idea nel tuo caso. Usa la variabile tempoultimaazione piuttosto (o come la chiamerai).
    Ce l'ho fatta! - ItalianPixel -

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.