variable use_strict_mode una sesion recuperar navegador ini_set especifica destruir delete cerrar php session

use_strict_mode - Realmente destruyendo una sesión de PHP?



php session use_strict_mode (3)

He escuchado respuestas contradictorias sobre este tema, entonces, ¿cuál es una forma segura de destruir una sesión de PHP?

session_start(); if(isset($_SESSION[''foo''])) { unset($_SESSION[''foo'']; ... } session_destroy();

En el caso más simple, ¿esto sería suficiente para terminar realmente la sesión entre el usuario y el servidor?



En el único sitio que hice donde usé sesiones de PHP, en realidad nunca destruyo la sesión.

El problema es que tienes que llamar a session_start() para comprobar tus variables $_SESSION , en cuyo caso, he aquí que has creado otra sesión.

Por lo tanto, en mi sitio me aseguré de que cada página llamada session_start() , y luego simplemente unset() esas partes de la sesión indiquen que importa cuando el usuario cierra la sesión.


Para destruir una sesión, debes seguir los siguientes pasos:

  • eliminar los datos de la sesión
  • invalidar la ID de la sesión

Para hacer esto, usaría esto:

session_start(); // resets the session data for the rest of the runtime $_SESSION = array(); // sends as Set-Cookie to invalidate the session cookie if (isset($_COOKIE[session_name()])) { $params = session_get_cookie_params(); setcookie(session_name(), '''', 1, $params[''path''], $params[''domain''], $params[''secure''], isset($params[''httponly''])); } session_destroy();

Y para asegurarse de que la ID de sesión no sea válida, solo debe permitir las ID de sesión que inició su secuencia de comandos. Establezca una bandera y verifique si está configurada:

session_start(); if (!isset($_SESSION[''CREATED''])) { // invalidate old session data and ID session_regenerate_id(true); $_SESSION[''CREATED''] = time(); }

Además, puede usar esta marca de tiempo para intercambiar la ID de la sesión periódicamente para reducir su duración:

if (time() - $_SESSION[''CREATED''] > ini_get(''session.gc_maxlifetime'')) { session_regenerate_id(true); $_SESSION[''CREATED''] = time(); }