
18/06/2005, 10:01
|
 | | | Fecha de Ingreso: febrero-2005 Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 20 años, 1 mes Puntos: 1 | |
Módulo Who's Online ¿? Hola, estoy tratando de hacer un módulo de vsitantes discriminando usuarios logueados de anónimos y tengo una serie de problemillas.
Trascribo el script a ver si alguien me puede dar una manito. Lo coloco con un require en todas las páginas del sitio. $tiempo_logout = 60000; // segundos tras los cuales un usuario es marcado como inactivo, había puesto 600 pero la diferencia entre $tiempo_logout y $tiempo (time()actual) es inmensa me da 5 cifras require_once("config.php");
$ip = $REMOTE_ADDR;
$t = mysql_query("select * from sesiones where sesion_ip='$ip' limit 1"); // encuentro la última visita $ti = mysql_fetch_array($t);
$tiempo = time(); // tiempo actual
$dif = $tiempo - $ti[sesion_tiempo]; // esta diferencia me da un resultado de 5 cifras aunque pasen 30 segundos entre F5's echo time()."<br>";
echo "$dif = $tiempo - $ti[sesion_tiempo]"; // esto está puesto por control, después se elimina $fecha = date("Y-m-d"); // tomo la fecha actual if ($ti[sesion_fecha] == $fecha) { // compruebo que la última visita desde esta IP sea del día de hoy mysql_query("update sesiones set sesion_activo='0' where sesion_activo='1' and ($dif >= $tiempo_logout)"); // llevo todas las sesiones activas a inactivas cuya diferencia de tiempo sea > que $tiempo_logout if ($dif <= $tiempo_logout) { // si está dentro del tiempo actualizo el registro siempre que esté activa mysql_query("update sesiones set sesion_id_us='$usuario',sesion_ip='$ip',sesion_tie mpo='$tiempo',sesion_activo='1' where sesion_ip='$ti[sesion_ip]' and sesion_fecha='$ti[sesion_fecha]' and sesion_activo='1'");
}
else if ($dif > $tiempo_logout) { // lo inverso mysql_query("update sesiones set sesion_activo='0' where sesion_ip='$ti[sesion_ip]'"); // llevo todas las sesiones de esta IP a inactivo mysql_query("insert into sesiones set sesion_id_us='$usuario',sesion_ip='$ip',sesion_tie mpo='$tiempo',sesion_fecha='$fecha',sesion_activo= '1'"); // inserto un nuevo registro }
}
else { // si la fecha de la BD no es == al día actual mysql_query("insert into sesiones set sesion_id_us='$usuario',sesion_ip='$ip',sesion_tie mpo='$tiempo',sesion_fecha='$fecha',sesion_activo= '1'"); // inserto una nueva sesión }
El tema es que o no me actualiza sesiones e inserta entonces me hace una tabla gigante. La idea era que sobreescriba cuando estén activas.
A posteriori quería usar esos datos para poder generar reportes de estadísticas del sitio y además colocar (eso ya lo tengo armado) un bloque tipo "Who's Online".
Espero me den una manito, intenté armarlo tomando los datos de las sesiones pero no lo pude hacer andar.
__________________ JuanPQUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE
Última edición por jpvilar; 18/06/2005 a las 10:02
Razón: Título erróneo
|