Refrescar y cerrar sesión

Cuando hay dos usuarios concetados a la aplicación y le das a F5 el 1º que se conezco pasa a er el otro usuario. Aver si tengo un usuario alumno y un usuario profesor y actualizo las 2 sesiones, la sesión alumno pasa a ser la del profesor.
No se si me he explicado bien.
Tengo puesto que se refresque cada POR tiempo para cerrar la sesión por inactividad:
<meta http-equiv="refresh" content="1200" />
¿Puede ser por eso?
Me han dicho que eso puede ser porque los dos usuarios tienen la misma ip y que debería usar session_id y cookie y guardar session_id, ip... En la base de datos pero no se como hacerlo.
NO lo entiendo y tu siempre me has ayudado y te entendido bien.
Otra cosita: ¿Cómo puedo cerrar sesión cuando cierre el explorador? Me dijiste que cuando se cierra el navegador se destruye la sesión pero el usuario sigue con conectado =1 y entonces no puede volver a conectarse.
Hay alguna forma que aunque se haya cerrado la aplicación internamente, ¿se siga ejecutando la inactividad o pasado POR tiempo se desconecte o algo así?

1 Respuesta

Respuesta
1
Uauh, son muchas cosas, pero vamos a ver.
Para el tema de sesiones, te sugiero que te estudies esto:
http://articles.sitepoint.com/article/users-php-sessions-mysql
Lo explican perfecto. Desde luego, controlar la sesión por IP es una locura!, hay muchos proxys y llevarás a la aplicación a error, seguro!
Para el tema de la inactividad, busca por procesos CRON del servidor, ejecutan el script que les digas cada plazo de tiempo determinado, y así se puede detectar si un usuario lleva conectado o no mucho tiempo.
Mirare que es eso del CRON, tengo algo hecho para la inactividad guardo la fecha y hora en que hace algo en la página y si excede del tiempo le cierro sesión. Supongo que sera algo así pero más completo. Voy a echar un visazo por ahí
Una cosa lo del problema al refrescar la página, puede ser por el control de sesiones que tengo, ¿no? Mirare la página que me comentas.
Ya te contare, gracias
Si, tienes un control de sesiones un poco particular... con IP's ¿?
El Cron unicamente ejecuta el php que tu le digas con una cadencia determinada
Me he leído el link que me has pasado y es lo que tengo puesto, pero debo de tener algo mal para que una sesión se convierta en otra. Tengo que tener algún fallo en la variable $_SESSION['usuario'] para que pase de un usuario a otro.
Es como si al hacer F5 volvase las variables $_SESSION de una sesión a la otra.
Al loguearse hago session_start y cargo los datos en la variable $_SESSION y luego en cada página hago el session_start y isset de la variable $_SESSION['usuario'].
Lo del CRON he estado viendo que hay diferentes y que es un archivo que ejecutas cada por tiempo pero no se si es lo que quiero.
El usuario es único y lo uso como identificación de sesión.
¿Se te ocurre algo?
No debes de hacer el isset en todas las páginas, solo en la del login, en el resto, session_start.
El cron lo que tiene es que puedes ejecutar un script que puede comprobar si las sesiones hace mucho que no se usan y entonces finalizarlas.
aver si me entero, yo tengo index.php donde relleno usuario y password y paso a loguearse.php donde hago el session_start() y relleno $_SESSION redirecciono a la página direcor.php o alumno.php según tipo usuario.
El isset lo tengo que poner en index, ¿en loguearse o en director.php?
¿Me podrías decir si esto es un CRON?:
$fechaGuardada = $sesion;
    $ahora=date("Y-n-j H:i:s");
    $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
    if($tiempo_transcurrido >= 1210) //si pasaron 10 minutos o más 60*10; 60*20=1200 refresco
    {
cierro sesion;
    }    
    else
        $sesion=$ahora;
}
¿PEro una vez que cierra el navegador esto ya no se ejecuaria no? Es que he visto cosas que hay que hacer conectado por ssh y crear un archivo
Exacto, en cuanto se loguean, asignas la SESSION y luego saltas a la página que toque, que tendrá como primera instruccion session_start();
Si, eso puede ser un CRON, claro. Debes ir al panel de tu servidor y en la opción de CRON o Tareas Programadas, decirle a ese archivo, con ese contenido, que se ejecute cada por tiempo.
El iseet lo pongo en todas las páginas para que no pueda entrar en una página directamente, es decir si en navegador pone direcrtor.php no se le muestre.
VOy a mirar si encuentro lo del CRON en el servidor.
NO se te ocurre que me puede pasar con lo de F5, porque hay subplantacion de usuarios en las variables de SESSION.
Muchas gracias
Gracias por todo siempre me echas una mano, al final lo he solucionado
<meta http-equiv="Expires" content="0">
<meta http-equiv="Last-Modified" content="0">
<meta http-equiv="Cache-Control" content="no-cache, mustrevalidate">
<meta http-equiv="Pragma" content="no-cache">
y con setcookie($login);
            session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);
No se si tiene sentido pero me funciona, no guardo las páginas en cache.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas