A ver, como dijo Jack: Vamos por partes.
Una cosa es la duracion de la sesion, esa puedes controlarla con variables de sesion y/o cookies y otra muy diferente es mostrar los usuarios conectados en tu sitio, para eso serviria el campo de fecha y el proceso es simple:
Código:
// Cuando el usuario abre cualquier pagina de tu sitio:
UPDATE usuarios
SET campo_de_fecha = fecha_del_sistema
WHERE identificador_de_usuario = variable_de_sesion
// Despues, para obtener el listado de los usuarios conectados
// tomas en cuenta solo aquellos que han tenido actividad en
// los ultimos 30 minutos (este valor puedes cambiarlo a tu gusto)
SELECT * FROM usuarios
WHERE campo_de_fecha > fecha_del_sistema - 30 minutos
Para mantener la sesion activa, necesitaras usar cookies, por ejemplo:
Código PHP:
Ver original// Guardas ID del usuario y un "hash" para comparar con datos de sesion
$salt = '#¬~%&';
$hash = md5($id . $password . $salt);
// Guardas la cookie, digamos con 30 dias de vigencia
setcookie('conectado', "$id_usuario-$hash", time() + (86400 * 30));
// Cuando un usuario se conecte, logicamente primero verificas variables de sesion
// Si no existe la sesion, buscas la cookie
if(isset($_COOKIE['conectado'])) { // Lees y separas el contenido, donde:
// $comparar[0] sera la id de usuario
// $comparar[1] sera el "hash" a verificar
$comparar = explode('-', $_COOKIE['conectado']); $id = $comparar[0];
if(isset($comparar[1])) { // Buscas en la base de datos el usuario por su ID
$dbpass = $row['password'];
// Creas el nuevo hash
$dbhash = md5($id . $dbpass . $salt); if($comparar[1] != $dbhash) {
// La cookie no es valida!!!
}
}
}
Esto es solo un breve ejemplo de como mantener sesiones activas por medio de cookies con un pequeño agregado de seguridad (aunque no es del todo seguro).
Solo no olvides eliminar la cookie (o guardarla con valor vacio y fecha de expiracion rapida) cuando un usuario haga click en finalizar sesion.