Hecho, y me funciona correctamente.
En la base de datos hice un campo "tiempo" de tipo int.
Este es el "actualizarTiempo.php" que se debe incluir en todas las páginas
Código PHP:
<?php
//si es usuario registrado guarda el tiempo
if (isset($_SESSION['id'])) {
$tiempousu = time();
$registros=mysql_query("UPDATE usuarios SET tiempo = $tiempousu WHERE id = $_SESSION[id]", $conexion)
or die("Problemas en el update:".mysql_error());
}
?>
Y esta es la función "revisarTiempo.php" que la base de datos debe hacer cada X tiempo
Código PHP:
<?php
$registros=mysql_query("SELECT id, estado, tiempo FROM usuarios", $conexion)
or die("Problemas en el select:".mysql_error());
//tiempo actual
$tiempoactual = time();
//si no debe estar activo de guarda la id
while ($reg=mysql_fetch_array($registros)) {
if ($reg['estado'] == 1) {
$tiempolimite = $reg['tiempo'] + 2700;
if ($tiempoactual > $tiempolimite) {
$idinactivos[] = $reg['id'];
}
}
}
//se modifica el estado de las id
if (isset($idinactivos)) {
for ($i=0;$i<count($idinactivos);$i++) {
$registros=mysql_query("UPDATE usuarios SET estado=0 WHERE id = $idinactivos[$i] ", $conexion)
or die("Problemas en el update:".mysql_error());
}
}
?>