Quelle est la différence entre session unset() et session destroy() en PHP?

du php.net documentation:

session_destroy - détruit toutes les données enregistrées à une session

session_unset - libre toutes les variables de session

ma question en trois parties est:

Les deux fonctions semblent très similaires.

Ce qui est vraiment la différence entre les deux?

les deux semblent supprimer toutes les variables enregistrées à une session. Est-ce que l'un d'eux détruit la session elle-même? Si ce n'est pas le cas, 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 du client?

75
demandé sur Ashwini Agarwal 2010-11-29 14:33:09

7 réponses

session_unset efface juste la variable $_SESSION . C'est l'équivalent de faire:

$_SESSION = array();

donc cela n'affecte que l'instance variable locale $_SESSION mais pas les données de session dans le stockage de session.

à la différence de celle, session_destroy détruit les données de session qui sont stockées dans le stockage de session (par ex. fichier de session dans le système de fichiers).

tout reste inchangé.

115
répondu Gumbo 2010-11-30 10:20:37

session_destroy(); supprime toute la session.

session_unset(); supprime seulement les variables de session - session existe toujours. Seules les données sont tronquées.

14
répondu Xamael 2014-05-04 17:24:06
session_unset();

effacer toutes les données de toutes les variables de session.



session_destroy();

supprimer toute session.


exemple :
session_start();
session_destroy();     
$a = "1234";
$_SESSION[a] = $a;

$_SESSION[a] est NULL .



session_start();
session_unset();     
$a = "1234";
$_SESSION[a] = $a;

$_SESSION[a] est 1234 .



donc, je vais utiliser:

session_start();
session_destroy();   
session_start();  
$a = "1234";
$_SESSION[a] = $a;
14
répondu SLyHuy 2016-03-07 12:33:44

session_unset() effacera la variable $_SESSION (comme dans array() ), mais elle ne touchera pas le fichier de session. Mais à la fin du script, l'état du $_SESSION sera écrit dans le fichier. Puis il effacera le fichier mais ne le supprimera pas. Quand vous utilisez session_destroy() il ne touchera pas $_SESSION (utilisez var_dump($_SESSION) après session_destroy() ), mais supprimera le fichier de session, donc quand script sort il n'y aura pas de fichier pour écrire l'état du $_SESSION .

4
répondu kaushik 2015-02-04 06:43:18

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

0
répondu Radian Yusuf Mahendra 2017-12-18 06:26:34

j'ai essayé d'utiliser session_unset($_SESSION['session_name']) en pensant qu'il ne désactivera que le nom spécifique ou individuel/session simple. Mais utiliser session_unset($_SESSION['session_name']) ne fera que désactiver le nom de la session. Le bon code à utiliser est seulement unset($_SESSION['session_name']) si vous voulez désactiver un nom de session unique.

0
répondu Marvin 2018-03-07 02:42:37

je pense que session_destroy() et session_unset() devraient être utilisés en même temps pour s'assurer que les données de session sont sûrement supprimées.

-2
répondu Riaj Mahmud Rasel 2015-05-02 13:14:53