Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/02/2013, 17:46
GonzaFY
 
Fecha de Ingreso: febrero-2013
Mensajes: 33
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Obtener los usuarios que estan conectados

Cita:
Iniciado por abimex Ver Mensaje
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 original
  1. public function Estado($usuario)
  2.         {
  3.             $funcion = $this->CI->db
  4.                                     ->like('user_data', $usuario)
  5.                                     ->limit(1)
  6.                                     ->order_by('last_activity', 'desc')
  7.                                     ->get('ci_sessions');      
  8.                                    
  9.             if($funcion->num_rows() > 0)
  10.             {
  11.                 $cuenta = $funcion->row()->last_activity;
  12.                 $now = time();
  13.                 $tiempo = $cuenta + 3600;
  14.                 if($tiempo > $now)
  15.                 {
  16.                     return false;
  17.                 }
  18.                 else
  19.                 {
  20.                     $inactividad = $now - $tiempo;
  21.                     return false;
  22.                 }
  23.                
  24.             }
  25.             else
  26.             {
  27.  
  28.             return false;
  29.             }
  30.            
  31.            
  32.            
  33.         }
  34.  
  35.         public function WhosOnline()
  36.         {
  37.             $funcion = $this->CI->db->get('miembros');
  38.  
  39.             foreach($funcion->result() as $row)
  40.             {
  41.                 $consulta = $funcion->row();
  42.                 $data[] = $this->Estado($row->usuario);
  43.                
  44.             }
  45.             return $data;
  46.            
  47.            
  48.         }