jeje, puras correcciones con ustedes!!
ciertamente es posible registrar los usuarios activos por medio de su propio registro en la BD, sin embargo es impreciso conocer quien ha cerrado sesión de acuerdo a si cerro el navegador, o solo cerró sesión en el sitio...
y al parecer solo es necesario conocer los usuario online, no estoy seguro si tiene relación directa con los usuarios registrados, para lo cual la técnica mostrada es realmente eficiente:
- se registra una hora de ingreso por IP
- se verifica cada tiempo, eliminando los IPs viejos
- finalmente se devuelve el total de IPs que constantemente se actualizan por "actividad"
es mas, si solo se trata de conocer los IPs (usuarios) on-line, indiferentemente de si están registrados o no, yo uso esto:
Código PHP:
/**
* Conexiones activas
*
* @param integer $time Duracion en segundos
* @return integer
*/
function actives($time = 300)
{
$remote = $_SERVER['REMOTE_ADDR'];
$tmp = md5($_SERVER['REQUEST_URI']);
if ( ! is_file($tmp)) touch($tmp, 0666);
$max = 0;
$out = '';
$cur = FALSE;
$old = file_get_contents($tmp);
$new = sprintf(';%s,%d', $remote, time());
foreach (explode(';', $old) as $val)
{
if ( ! strstr($val, ',')) continue;
$test = explode(',', $val);
$addr = $test[0];
$past = (int) $test[1];
if ((time() - $past) > $time) continue;
elseif ($addr === $remote)
{
$cur = TRUE;
continue;
}
$out .= $val;
$max += 1;
}
if ($cur === FALSE) $out .= $new;
file_put_contents($tmp, $out);
return $max;
}
Edito: creo que el script anda mal, pero bueno, la idea es esa....