Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/06/2005, 10:01
Avatar de jpvilar
jpvilar
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 19 años, 2 meses
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.
__________________
JuanP
QUIEN 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