De la documentation php.net :
session_destroy - Détruit toutes les données enregistrées dans une session
session_unset - Libère toutes les variables de session
Ma question en trois parties est la suivante:
Les deux fonctions semblent très similaires.
Quelle est vraiment la différence entre les deux?
Les deux semblent supprimer toutes les variables enregistrées dans une session. L'un d'eux détruit-il réellement la session elle-même? Sinon, comment procédez-vous (détruisez la session elle-même).
Est-il exact qu'aucune des deux fonctions ne supprime le cookie de session chez le client?
session_unset
efface simplement la variable $_SESSION
. Cela revient à faire:
$_SESSION = array();
Ainsi, cela n'affecte que l'instance de variable locale $_SESSION
Mais pas les données de session dans le stockage de session.
Contrairement à cela, (session_destroy
détruit les données de session qui sont stockées dans le stockage de session (par exemple le fichier de session dans le système de fichiers).
Tout le reste reste inchangé.
session_destroy();
supprime toute la session.
session_unset();
supprime uniquement les variables de la session - la session existe toujours. Seules les données sont tronquées.
session_unset()
effacera la variable $_SESSION
(comme dans array()
), mais elle ne touchera pas le fichier de session. Mais quand le script se termine; l'état du $_SESSION
sera écrit dans le fichier. Ensuite, il effacera le fichier mais ne le supprimera pas. Lorsque vous utilisez session_destroy()
, il ne touchera pas $_SESSION
(Utilisez var_dump($_SESSION)
après session_destroy()
), mais supprimera le fichier de session, donc lorsque le script quitte il n'y aura pas de fichier pour écrire l'état du $_SESSION
.
J'ai essayé d'utiliser session_unset($_SESSION['session_name'])
en pensant que cela ne désactive que le nom de session spécifique ou individuel/unique. Mais l'utilisation de session_unset($_SESSION['session_name'])
ne désactive que tous les noms de session. Le bon code à utiliser est uniquement unset($_SESSION['session_name'])
si vous souhaitez supprimer un seul nom de session.
session_destroy()
supprimera la session après avoir déplacé la page et session_unset()
supprimera la session lorsque le code sera exécuté.