Ver Mensaje Individual
  #7 (permalink)  
Antiguo 01/07/2011, 15:35
dfmex
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Pregunta Respuesta: Condicionar Sesiones en PHP

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?