2009-02-20 13 views
5

Nella mia ricerca per trovare un modo per far dire a PHP quante persone sono "online" sul mio sito ho scoperto che ci sono modi per "stimare" Questo.script per dirmi chi e quanti utenti sono online

Ho scelto di registrare tutto ciò che accade sul sito, anche per ragioni di gestione degli errori, ma ora sono bloccato a scrivere la mia query SQL.

Fondamentalmente Ho un database con 'IP', 'userid' e 'datetime' e ho pensato che una query come questo sarebbe fare il trucco:

SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW() 

Il problema è che il mio sito è visto per lo più e usato dagli studenti nella rete scolastica, e beh ... hanno tutti lo stesso IP.

Quindi la domanda è, sto facendo bene, e posso selezionare due righe distinte dal mio database, in modo da poter ordinare gli utenti registrati (che avranno un 'userid' - gli altri avranno userid = 0)?

risposta

3

Utilizzare i cookie anziché gli indirizzi IP.

PHP rende molto semplice con il suo meccanismo di sessione. Su ognuno di voi prima fate un session_start() e poi utilizzate il valore restituito da session_id() come identificativo del visitatore che potete inserire nel vostro database.

+0

potresti spiegarci un po 'di più? – Jasper

2

Ho creato un sistema per un sito scolastico che richiedeva questa funzione ed ecco come l'ho fatto.

ho avuto una tabella di utenti, in quel tavolo c'era un campo chiamato "online_time"

Su ogni pagina di una funzione è stata chiamata se l'utente è stato registrato in quel aggiornato il "online_time" per l'ora corrente di quell'utente (unixtime)

Poi ho avuto una funzione "Chi è online" che ha guardato il "online_time" e ha visualizzato tutti gli utenti con il tempo online degli ultimi 5 minuti.

EDIT al commento:

Si potrebbe fare la stessa funzione salvare l'ID di sessione in un altro tavolo e il tempo è stato salvato. L'ID di sessione è unico per l'utente che sta navigando, quindi è possibile ottenere il numero di ID di sessione attivo negli ultimi 5 minuti.

session_id() 
+0

Anch'io ho già, gli amministratori vogliono anche sapere quante persone sono online - quindi ho bisogno anche degli utenti non loggati – Jasper