He programado un sistema de login con php y mysql para una web que estoy diseñando desde cero. Funciona perfectamente pero me da la impresión de que no cierra todas las sesiones como debería.
Esto es: Si un usuario inicia sesión, se crea una variable de sesión y le da acceso a la zona restringida. En esta zona tiene el botón "Cerrar sesión" que llama al siguiente código php:
Código PHP:
<?php
session_start();
unset($_SESSION["name"]);
session_destroy();
header("Location: index.html");
exit();
?>
Ahora bien, mientras programaba el código inicié sesión con algunas cuentas, y por aquel entonces todavía no había implementado la opción de cerrar sesión. ¿Esas sesiones siguen abiertas?, porque supongo que php no borra las variables de sesión automáticamente cuando pasa un periodo de tiempo llamando por si solo a "session_destroy()" (¿o si?) y por tanto siguen existiendo.
¿Y si el usuario cierra el navegador sin darle al botón "cerrar sesión" (es decir, sin llamar al script correspondiente)?, luego le obliga a logearse ¿pero la variable sesión ha sido destruida?.
Otra cuestión:
Si "sessión_destroy();" elimina todo el contenido de la variable de sesión y la destruye, ¿por qué hay que llamar a "unset($_SESSION["name"]);"? (aparecía en el manual que he seguido).
Esto es más nada conocer el funcionamiento de $_SESSION[...]. Un cordial saludo.