Ok, he controlado ya el tiempo, mi tabla en la base de datos la tengo asi:
Nombre de la Tabla: Login
Campos: LoginID, LoginUser, LoginClave, LoginIP, LoginLastTime, LoginAct
En el campo 1 tengo lo siguiente (he añadido un usuario para ejemplificar):
LoginID: 1
LoginUser: prueba
LoginClave: test
LoginIP: 192.168.1.75
LoginLastTime: 2011-07-01 15:56:53
LoginAct: 0
Muy bien, ahora, cuando solicito que se verifique si un usuario está activo o no lo que hago es decirle a PHP que por medio de una consulta a la base de datos verifique si LoginAct = 0 (no activo), 1 (activo)
Entonces, si LoginAct = 1 (activo) le pido a PHP que me verifique el tiempo entre el inicio de la sesión y el tiempo actual asi:
Código PHP:
$actual = date("Y-m-d h:i:s");
$Comando = "SELECT TIME_TO_SEC( TIMEDIFF( '".$actual."', '".$LoginLastTime."' ) ) as minutos";
$Mostrar = mysql_query($Comando, $db) or die(mysql_error());
$Minutos = mysql_fetch_assoc($Mostrar);
// Si han pasado más de 1800 segundos (30 minutos) cerrar sesión actual e iniciar una nueva.
if($Minutos > 1800){ }
//De lo contrario
else {exit('Error: Este usuario ya cuenta con una sesión activa');}
Bueno, hasta aquí ya controlo que no se pueda iniciar sesión en 2 navegadores o 2 ordenadores distintos simultaneamente, ahora el paso es:
1.- Si ya inicie sesión, actualizar el tiempo en la tabla, en el campo LoginLastTime con
date("Y-m-d h:i:s"); cada 10 minutos.
Si han pasado 10 minutos desde mi último movimiento de actividad en la web se ejecuta una alerta CSS que me dice que haga click en "Sigo aquí" para no cerrar mi sesión, si no aprieto "¡Hey, SIGO AQUI!" en 1 minuto despues de lanzada la alerta entonces por medio de un javascript ejecutará un Ajax que me cerrará la sesión y de lo contrario que actualice el LastLoginTime (en caso de haber apretado el boton).
Mi duda existencial sigue siendo esta:
Supongamos que inicié sesión ahorita, y cerre mi navegador, y despues voy a un internet publico, o el de mi prima, etc, e inicio sesión ahi y tambien cierro el navegador sin cerrar sesión.
Entonces llego a mi casa y como nunca cerre mi sesión asi hayan pasado 5 dias no me pedirá login la web, y entonces tenemos que de esta forma mi prima y yo estaremos en el mismo login sin problemas
¿Cómo podría evitar esa parte?