Foros del Web » Programando para Internet » PHP »

usuarios en Linea PHP - MySQL

Estas en el tema de usuarios en Linea PHP - MySQL en el foro de PHP en Foros del Web. Hola amigos estoy desarrollando mi pequeña aplicación con PHP + MySQL + Apache Quisiera me puedan orientar como hacer que cuando los usuarios se logean ...
  #1 (permalink)  
Antiguo 19/02/2006, 07:41
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 19 años, 2 meses
Puntos: 0
usuarios en Linea PHP - MySQL

Hola amigos estoy desarrollando mi pequeña aplicación con PHP + MySQL + Apache

Quisiera me puedan orientar como hacer que cuando los usuarios se logean en mi sitio aparesca la lista de usuarios y linea .
Y cuando se retiren o salen del Site simplemente desaparesca de la lista de usuarios en linea.

Estube leendo que se trabaja con una Tabla de usuarios

Pero estube intentando Tablas + Variables de SESION y la verdad quisiera sus apoyos amigos.


Salu2
  #2 (permalink)  
Antiguo 19/02/2006, 08:27
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Lo puedes hacer así: en la tabla donde guardo los nombres de usuarios con sus datos, agrego un campo que lo puedes llamar "online" de tipo entero, en el que guardarás un timestamp.
En ese campo cada vez que un usuario abre una nueva pagina de nuestro sistema, actualizo ese timestamp viejo con el timestamp actual. Algo asi:

Código PHP:
<?php
$ultimo_clic
=time();
mysql_query("UPDATE usuarios SET online='$ultimo_clic' WHERE usuario='$nombre_usuario'");
// Suponiendo que $nombre_usuario es el nombre de nuestro usuario actual
?>
Lo que logras con esto es guardar el la base el tiempo en segundos de la última pagina que el usuario visitó dentro de nuestro sitio.

Ahora que ya tienes el ultimo clic de cada usuario, para mostrar quienes estan activos en X momento, primero debes establecerte cual es el rango de tiempo admisible para tomar a un usuario como activo. Yo por lo general tomo como activos a los usuarios cuyo "ultimo clic" fue hace 5 minutos o menos. En este caso lo podrias hacer así:

Código PHP:
<?php
// Seteo el tiempo en segundos de hace 5 minutos
$tiempo_pasado=time()-300;
/* Establezco que la consulta me seleccione a aquellos usuarios cuyo 
"tiempo de ultimo clic" sea mayor o igual al $tiempo_pasado (5 minutos) */
$consulta="SELECT nombre_usuario FROM usuarios WHERE online>='$tiempo_pasado'";
$result=mysql_query($orden);
// Mostramos los nombres de esos usuarios (los activos)
while($row=mysql_fetch_row($result)) echo $row[0];
?>
Bueno, espero haber sido claro y que te resulte útil.

Saludos.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 19/02/2006 a las 08:54
  #3 (permalink)  
Antiguo 19/02/2006, 17:55
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 19 años, 2 meses
Puntos: 0
De acuerdo

Hola zaqpz

muchas gracias por brindarme la idea y algunos Script's espero q otros participantes del foro tambien nos den sus procedimientos como lo hacen.

Saludos
  #4 (permalink)  
Antiguo 19/02/2006, 18:31
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
Pero en donde tendria que insertar este codigo :

<?php
$ultimo_clic=time();
mysql_query("UPDATE usuarios SET online='$ultimo_clic' WHERE usuario='$nombre_usuario'");
// Suponiendo que $nombre_usuario es el nombre de nuestro usuario actual
?>
  #5 (permalink)  
Antiguo 19/02/2006, 18:48
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por braiank
Pero en donde tendria que insertar este codigo :

<?php
$ultimo_clic=time();
mysql_query("UPDATE usuarios SET online='$ultimo_clic' WHERE usuario='$nombre_usuario'");
// Suponiendo que $nombre_usuario es el nombre de nuestro usuario actual
?>
El código que actualiza el "último clic" de un usuario deberias ponerlo en cada una de las páginas que componen tu sistema de usuarios.
Por lo general en la parte superior de esas páginas tu deberías verificar si X usuario esta logueado o no para darle acceso al contenido que pretende ver, bueno, en el caso que esté logueado, ejecutas ese pedazo de código, y en caso contrario redireccionas a la página de logueo o realizas otra acción. De esta manera mantendrás actualizado el timestamp de cada uno de los usuarios.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #6 (permalink)  
Antiguo 15/03/2006, 22:59
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 19 años, 2 meses
Puntos: 0
De acuerdo Ok

HOla zaqpz

Funciona muy bien el Script que posteaste......

Si hubiera otro método de los demás usuarios ?


Salu2 a to2
  #7 (permalink)  
Antiguo 15/03/2006, 23:59
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Ese método es sencillo y si hay otro seguramente se basa en éste mismo que zaqpz ha explicado.


Una recomiendación:

Cita:
zaqpz dice: El código que actualiza el "último clic" de un usuario deberias ponerlo en cada una de las páginas que componen tu sistema de usuarios.
Sí, va en cada una de las páginas en las que quieras mostrar cuántos usuarios online hay, pero no vayas copiar y pegar el código en cada una de tus páginas, puedes hacer dos cosas para evitar eso:

* Llamar a una función que puedes llamar en cualquiera de tus páginas.
* Incluir el código en cada página con un include() o un require().
__________________
"Di no al Internet Explorer" -Proverbio Chino-
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 13:29.