2009-02-20 26 views
5

En mi investigación para encontrar una manera de hacer que PHP me diga cuántas personas están 'en línea' en mi sitio, he descubierto que hay formas de 'estimar' esta.script para decirme quién y cuántos usuarios están en línea

He elegido registrar todo lo que sucede en el sitio, también para el manejo de errores, pero ahora estoy atascado al escribir mi consulta SQL.

Básicamente tengo una base de datos con 'IP', 'ID de usuario' y 'fecha y hora' y pensé que una consulta como esta haría el truco:

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

El problema es que mi sitio es principalmente vista y utilizado por los estudiantes en la red escolar, y bueno ... todos tienen la misma IP.

Entonces la pregunta es, ¿lo estoy haciendo bien, y puedo seleccionar dos filas distintas de mi base de datos, para poder clasificar a los usuarios registrados (que tendrán un 'ID de usuario' - otros tendrán ID de usuario = 0)?

Respuesta

3

Use cookies en lugar de direcciones IP.

PHP lo hace muy fácil con su mecanismo de sesión. En cada uno, primero haga un session_start() y luego use el valor devuelto por session_id() como identificador del visitante que puede colocar en su base de datos.

+0

podría explicar un poco más? – Jasper

2

Creé un sistema para un sitio escolar que también me pidió esta función y así es como lo hice.

que tenía una tabla de usuarios, en esa mesa había un campo llamado "online_time"

En cada página una función se llama cuando el usuario se registra en ese día el "online_time" a la hora actual ese usuario. (unixtime)

Luego tuve una función "Quién está en línea" que miraba el "tiempo_en línea" y mostraba a todos los usuarios el tiempo en línea de los últimos 5 minutos.

EDITAR para el comentario:

Se podría hacer la misma función guardar el id de sesión en otra mesa y el momento en que se guardó. El ID de la sesión es exclusivo de esa navegación del usuario, por lo que puede obtener el número de identificación de la sesión activa en los últimos 5 minutos.

session_id() 
+0

Ya lo tengo también, los administradores también quieren saber cuántas personas están en línea, así que también necesito que los usuarios que no están conectados – Jasper

Cuestiones relacionadas