veamos estoy haciendo un sistema con un IM chat privado entre los amigos bien cuando se logean los campos de online de la tabla users se ponen en 1 para detectar que estan conectado hasta aqui todo perfecto el usuario esta activo y online ¿pero que pasa si el usuario no sale pulsando desconectar? como se si ya no esta para apagar su icono del IM. Bien e pensado en registrar su ip cuando logean y luego ir comprobando si la ip esta en la base de datos como trabaja un contador de usuarios online. hasta bien tambien pero el codigo que e echo para que verifique si la ip esta o no en el campo de user online no me trabaja bien me tira a todos no se hace cosas raras aqui dejo el codigo haber si vosotros veis donde esta el error por que yo no lo veo para mi entender la comprobacion esta correcta-
Código PHP:
//asignamos un nombre memotecnico a la variable
$ip = $REMOTE_ADDR;
//definimos el momento actual
$ahora = time();
//actualizamos la tabla
//borrando los registros de las ip inactivas (24 minutos)
$limite = $ahora-1*60;
$ssql = "delete from gente_online where date < ".$limite;
$db->consulta($ssql);
//miramos si el ip del visitante existe en nuestra tabla
$ssql = "select ip, date from gente_online where ip = '$ip'";
$result = $db->consulta($ssql);
//si existe actualizamos el campo fecha
if ($db->cuenta($result) != 0) $ssql = "update gente_online set date = ".$ahora." where ip = '$ip'";
//si no existe insertamos el registro correspondiente a la nueva sesion
else $ssql = "insert into gente_online (ip, date, id_usuario) values ('$ip', $ahora, '".$_SESSION['id']."')";
//ejecutamos la sentencia sql
$db->consulta($ssql);
//calculamos el numero de sesiones
$ssql = "select ip from gente_online";
$result = $db->consulta($ssql);
$usuarios = $db->cuenta($result);
// compruebo las IP de los usuarios logeados y con el camppo online en 1
$resulta=$db->consulta("SELECT * FROM usuarios WHERE online=1");
while($dato=$db->fetch($resulta)){
// compruebo que la id del usuario no se encuentre entre los online
$resultaX=$db->consulta("SELECT * FROM gente_online WHERE id_usuario='".$dato['id']."'");
if($db->cuenta($resultaX)==0){
// si el resultado es 0 es que no esta y desactivo su IM como offline.
$db->consulta("UPDATE usuarios SET online=0 WHERE id='".$dato['id']."'");
$db->consulta("UPDATE amigos SET online=0 WHERE id_amigo='".$dato['id']."'");
}
}
haber si sabes decirme o veis donde esta el problema ya que no lo logro y llevo 3 horas peleandome.
gracias