La fin d'une session ne peut pas être automatiquement déterminée par le système.

Le développeur peut arrêter implicitement une session avec la fonction session_destroy().

Les variables de session dans le tableau $_SESSION restent accessibles dans le script qui a invoqué session_destroy(), mais elles ont disparu dans les scripts suivants.

Les données session (SID, nom de la session) ne sont pas supprimées. Un nouveau session_start() ne générera pas un nouvel identifiant de session, mais reprendre le premier.

Pour terminer complétement une session, il faut supprimer implicitement le cookie de session avec setcookie().

Exemple : terminer une session
<?php ob_start(); session_start(); require('bib_fonctions.php'); htmlDebut('Terminer une session'); htmlInfo('Identifiant session'); echo session_id(); session_destroy(); $cookieParams = session_get_cookie_params(); setcookie(session_name(), '', time() - 86400, $cookieParams['path'], $cookieParams['domain'], $cookieParams['secure'], $cookieParams['httponly'] ); htmlInfo('Identifiant session après suppression'); echo session_id(); htmlFin(); ?>

Comme pour supprimer un cookie, il faut utiliser les mêmes paramètres que ceux de sa création, nous les récupèrons avec la fonction session_get_cookie_params() spécialement faite pour ça. A noter la date de validité du cookie est le moment présent - 24 heures pour éviter tout problème de décalage horaire entre le serveur et le client.

On aurait pu aussi implicitement réinitialiser $_SESSION avec
$_SESSION = array();
si on n'avait plus besoin de son contenu dans le script.