Hacer algo cuando el usuario navega fuera de una página es el enfoque incorrecto porque no sabe si el usuario navegará a una página completamente diferente (digamos contact.php por el bien del argumento) o él/ella simplemente irá a la página siguiente de abc.php y, como señaló Borealid, no puede hacerlo sin JS. En su lugar, simplemente puede añadir una comprobación para ver si el usuario llega de abc.php:
En primer lugar, en su archivo abc.php establecer una variable única en el array $ _SESSION que actuará como un signo de que el usuario ha sido en esta página:
$_SESSION['previous'] = basename($_SERVER['PHP_SELF']);
a continuación, añadir esto en todas las páginas, antes de cualquier salida para comprobar si el usuario está viniendo de abc.php:
if (isset($_SESSION['previous'])) {
if (basename($_SERVER['PHP_SELF']) != $_SESSION['previous']) {
session_destroy();
### or alternatively, you can use this for specific variables:
### unset($_SESSION['varname']);
}
}
de esta manera se destruirá la sesión (o variables específicas) solo si el usuario está viniendo de abc.php y la página actual es diferente.
Espero haber sido capaz de explicar esto claramente.
posible duplicado de [Cerrar/cerrar la sesión cuando el navegador o la pestaña están cerrados] (http://stackoverflow.com/questions/1921941/close-kill-the-session-when-the-browser-or-tab -is-closed) – Quentin
thx bro.but es una solución asp. no obtengo nada de ella .... ¿Cómo puedo mantener viva mi sesión hasta que un usuario visite mi página abc.php.when el usuario abandone abc.php entonces simplemente destruye la sesión. – riad
En realidad, la primera respuesta en el hilo vinculado es la correcta, y para nada específica de ASP. – deceze