web-dev-qa-db-fra.com

Quelle est la différence entre session_unset () et session_destroy () en PHP?

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?

83
Johan

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é.

134
Gumbo

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.

16
Xamael

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.

5
kaushik

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.

0
Marvin

session_destroy() supprimera la session après avoir déplacé la page et session_unset() supprimera la session lorsque le code sera exécuté.

0