Buenas a todos, espero puedan ayudarme con esta inquietud, estoy desarrollando un proyecto para una empresa y necesito tener un registro de las sesiones de usuario con su hora de entrada y hora de salida, a la hora de la entrada no tengo ningún problema, el problema surge cuando el usuario cierra sesión, y este simplemente no le da al botón salir del sistema entonces este no me guarda la hora de salida, Ya tengo que cada cierto tiempo se verifique la inactividad del usuario para el cierre automático, pero si este cierra el navegador no se hace esta verificación, ¿Alguien tiene alguna idea para guiarme?. Pongo el código que tengo hasta ahora.
validar.php
/*se inicia la session*/
session_name("prueba");
session_start();
//cambiamos la duración a la cookie de la sesión
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);
$_SESSION["ultimoAcceso"]= date("Y-m-d H:i:s");
Este el codigo que inicia la sesion de usuario y toma la hora y fecha actual de esta luego de que sea correcta la validación de mi usuario
sesion.php
session_name("prueba");
session_start();
//cambiamos la duración a la cookie de la sesión
session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0);
//si la session no esta iniciada lo regresa a la pagina principal
if($verificar!="registrarse")
{
echo "<script>window.parent.location.href='salir.php';</script>";
}
else {
//sino, calculamos el tiempo transcurrido
$fechaGuardada = $_SESSION["ultimoAcceso"];
$ahora = date("Y-m-d H:i:s");
$tiempo_transcurrido = $ahora-$fechaGuardada;
//comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 900) {
//900 si pasaron 30 minutos o más
session_destroy(); // destruyo la sesión
echo "<script>window.parent.location.href='salir.php';</script>"; //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}
aqui verifico la inactividad y actualizo la hora y fecha de ingreso
salir.php
include('conectarse.php');//conexion con la base de datos
include('session.php');//incluir el archivo de sesión
session_name("prueba"); // nombre de la sesión iniciada
session_start(); //iniciar la sesión
$hora=date('H:i:s');//se toma la hora actual
$ced=$_SESSION['cedula'];
$sql=pg_query("SELECT * FROM historial_session where cd_p='$ced' ORDER BY id_hist DESC LIMIT 1");//se hace la consulta para que tome el ultimo registro de ese usuario
$array=pg_fetch_array($sql);
$id=$array['id_hist'];
$sql2="UPDATE historial_session SET hora_salid='$hora' WHERE id_hist='$id'";//se actualiza la hora de salida
$resultado2=pg_exec($sql2);
unset($_SESSION['prueba']);
// destruye la sesión
session_destroy();
header("Location: ../");//se manda a la pagina de inicio
exit;
aqui cierro la sesion y guardo la hora de salida de este
no se cual es el problema :l