En lo personla realizaria una tabla:
USER | DATETIME
------+-------------
Jorge | 2012-.......
------+-------------
Y despues en todas las paginas.
Código PHP:
<?php
session_start();
require_once('include/functions.php');
if( ! /* valido session */ ){
goLogin();
}else{
require ("config.php")or die( "No se pudo cargar el archivo de conexion");
setOnline();
}
// CODIGO HTML
getOnline();
?>
functions.php
Código PHP:
<?php
// funciones globales de mi web
function goLogin(){
session_destroy();
header( "Location: login.php" );
exit;
}
function setOnline(){
mysql_query("
UPDATE tabla SET DATETIME='".date()."'
WHERE USER='".$_SESSION['user']."'
")or die( "Fatal error setOnline(): ".mysql_error());
}
function getOnline(){
$query=mysql_query("
SELECT USER FROM tabla
WHERE
DATETIME >= '".date('Y-m-d H:i:s',strtotime(date('Y-m-d H:i:s') "-3 minute "))."'
")or die( "Fatal error getOnline(): ".mysql_error());
while($On = mysql_fetch_row($query)){
echo $On[0]."<br>\r\n";
}
}
?>
Claro que vas a tener que mejorar el codigo, ya que lo hice recien xD! y que en la "tabla" no estan los usuarios, vas a tener que Insertarlos a todos, o usar otra tabla y agregarle el DATETIME.
NOTA: recorda poner USER y DATETIME como INDEX
EDITO:
Me di cuenta que estan usando
online>(UNIX_TIMESTAMP(NOW())-5*60), solo replazalo en getOnline