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?
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é.
session_destroy();
supprime toute la session.
session_unset();
supprime seulement les variables de session - session existe toujours. Seules les données sont tronquées.
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]
estNULL
.
session_start();
session_unset();
$a = "1234";
$_SESSION[a] = $a;
$_SESSION[a]
est1234
.
donc, je vais utiliser:
session_start();
session_destroy();
session_start();
$a = "1234";
$_SESSION[a] = $a;
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
.
session_destroy()
supprimera la session après avoir déplacé la page
et
session_unset()
supprimera session lorsque le code est lancé.
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.
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.