ciao a tutti,
sn due settimane che mi sbatto su sto problema....
io dovrei sapere quanti utenti sono presenti sulle mie pagine...
io avevo pensato di creare una tabella online... quando qualcuno si loga... viene inserito il record del utente e quindi si segnala che è online... ma come faccio a eliminarlo quando si scollega? deve perforza effettuare il logout? ma se chiude automaticamente la finestra? rimane segnalato online... come posso fare?
Aggiungi un campo temporale, che aggiorni ogni volta che l'utente si muove nel sito: se non agisce per un tot, la prima volta che chiunque si collega, fai cancellare il record dell'utente. Cosi` e` come dire che si e` automaticamente scollegato. Spero di essermi riuscito a spiegare bene.
Sospettavo cio`. Dunque, allora provo a esemplificare.
ho visto che il tuo sito te lo sei fatto da te in php, e che si propoene di fornire script agli utenti, quindi ho suposto che qualche cosa tu la sappia, o sappia comunque come approfondire (anche perche` per i dettagli dovrei prendere in mano i manuali, non me li ricordo ...)
In questo esempio l'utente non ha bisogno di logarsi, ma basta che acceda al sito per essere segnalato come on-line.
La tabella del db avra` i seguenti campi:
- id [se vuoi, al solito auto-increment, non utile ai nostri fini ma sempre consigliato per ragioni di sicurezza]
- ip [puoi tranquillamente usare un varchar(15); qui salvi l'indirizzo ip di chi accede]
- time [di tipo int(16) credo che sia suficente perche` ci stia un unix timestamp]
Per il tempo istantaneo in unix timestamp (secondi dal 1 Gennaio 1970) usa la funzione time() del php. In alternativa esiste il modo di inserirlo direttamente da mySQL, ma ora non ricordo come.
Ora, quando qualcuno accede controlli la tabella e fai quanto segue:
- Se l'ip e` assente, aggiungi un record con l'ip e il dato temporale attuale.
- Se l'ip e` presente, modifichi il record aggiornando il campo temporale.
- Quindi, controlli tutti i record della tabella, e cancelli quelli in cui la differenza tra il tempo istantaneo e quello salvato supera un tot prefissato (ad esempio, 5 minuti).
Devi far si che mentre naviga nel tuo sito il campo ORA_ACCESSO venga aggiornato (all'ora in cui effettua ogni click).
Quando fai questo genere di operazione fai anche un semplice controllo:
ORA_ATTUALE - ORA_ACCESSO >= 5 min ?
(SI) reputo che l'utente è uscito e cancello il nominativo dalla tabella
(NO) l'utente è ancora dentro e allora non faccio nulla
Non fai un controllo per oggni utente specifico in tabella ovviamente !
Quindi fai una query nella tabella per conoscere quali utenti hanno superato i 5 minuti
e li cancelli. Alla fine puoi fare 2 query in tutto o in forma contratta 1 sola.
Con un controllo del genere chiunque entra nel sito fa sto controllo e aggiorna in automatico la tabellina in questione.
mmhmhh... ma salva i log? oppure vuoi che lo proviamo quando ci sei anche tu ?? perchè io pensavo di leggere una cosa tipo "al momento ci sono X utenti collegati"
Ultima modifica di djgaggio : 30-06-2004 alle ore 12.41.57
funziona... ho testato lo script controllando il db è lo script funziona egregiamente... adesso lo modifico per salvare i log e visualizzare gli utenti online.... che soddisfazione