Cita:
Iniciado por abimex si las sessiones se guardan en la db, puedes sacar las sessiones activas por fecha, es decir, obtener las sesiones que han estado activas en los ultimos 15 minutos (o el tiempo que quieras), usando consulta SQL sera facil hacer lo que necesitas
Saludos
Si eso si.. El problema es que es un lio en realidad saber que usuario esta y quien no..
Al utilizar las sessiones en db te piden que crees una tabla que contenga:
session_id, ip_adrress, user_agent, last_activity y user_data(que es donde se guardan todos los datos de las sessiones que has cargado)
El problema es que en user_data la informacion se guarda asi:
a:7:{s:9:"user_data";s:0:"";s:2:"id";s:1:"1";s:7:" usuario";s:7:"gonza";s:6:"nombre";s:7:"Gonzalo";s: 8:"apellido";s:16:"Fernandez";s:5:"rango";s:1:"2"; s:8:"conexion";b:1;}
Entonces no se como hacer el control de que usuario esta conectado..
Habia hecho esto pero no me convence mucho..
Código PHP:
Ver originalpublic function Estado($usuario)
{
$funcion = $this->CI->db
->like('user_data', $usuario)
->limit(1)
->order_by('last_activity', 'desc')
->get('ci_sessions');
if($funcion->num_rows() > 0)
{
$cuenta = $funcion->row()->last_activity;
$tiempo = $cuenta + 3600;
if($tiempo > $now)
{
return false;
}
else
{
$inactividad = $now - $tiempo;
return false;
}
}
else
{
return false;
}
}
public function WhosOnline()
{
$funcion = $this->CI->db->get('miembros');
foreach($funcion->result() as $row)
{
$consulta = $funcion->row();
$data[] = $this->Estado($row->usuario);
}
return $data;
}