Pour détruire une session, vous devez prendre les mesures suivantes:
- supprimer les données de session
- annuler la session ID
Pour ce faire, je « D utiliser ceci:
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();
Et pour être sûr que l'ID de session est valide, vous ne devez autoriser les ID de session qui ont été initiés par votre script. Donc, définir un indicateur et vérifier si elle est définie:
session_start();
if (!isset($_SESSION['CREATED'])) {
// invalidate old session data and ID
session_regenerate_id(true);
$_SESSION['CREATED'] = time();
}
De plus, vous pouvez utiliser cet horodatage pour échanger l'ID de session périodiquement pour réduire sa durée de vie:
if (time() - $_SESSION['CREATED'] > ini_get('session.gc_maxlifetime')) {
session_regenerate_id(true);
$_SESSION['CREATED'] = time();
}
Jetez un oeil à: http://stackoverflow.com/questions/10648565/destroying-php-session/10662060#10662060 – Brett