Maison  >  Article  >  développement back-end  >  Quelle est la différence entre session_unset() et session_destroy() en PHP

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

青灯夜游
青灯夜游original
2019-03-15 10:34:414978parcourir

Il existe deux fonctions très similaires session_unset() et session_destroy() en PHP. Toutes deux sont utilisées pour supprimer toutes les variables enregistrées dans la session, alors quelles sont les différences entre elles ? L'article suivant vous présentera la différence entre session_unset() et session_destroy(). J'espère qu'il vous sera utile. [Recommandation du didacticiel vidéo : Tutoriel PHP]

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

Fonction session_unset()

session_unset()La fonction supprime uniquement les variables de la session, la session existe toujours, elle tronque uniquement les données.

Syntaxe de base :

session_unset( void )

Fonction session_destroy()

session_destroy()La fonction détruira l'association avec la session en cours toutes les données ; mais cela ne supprime aucune variable globale associée à la session, ni le cookie de session.

Syntaxe de base :

session_destroy( void )

Recommandations de sujets connexes : session php (y compris des images, des vidéos, des cas)

La différence entre session_unset() et session_destroy()

Jetons un coup d'œil à la différence entre session_unset() et session_destroy() via exemples de code

Enregistrez d'abord la session à l'aide du fichier session.php

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
//显示会话ID
echo session_id(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效.&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
  
$_SESSION[&#39;name&#39;] = &#39;PHP中文网!&#39;; 
$_SESSION[&#39;website&#39;] = &#39;www.php.cn&#39; ; 
  
?>

Sortie :

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

Exemple 1 : Utilisation de la fonction session_unset()

Avant d'utiliser la fonction session_unset(), le nom et le site Web seront affichés en premier.

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
  
?>

Sortie :

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

Après avoir utilisé la fonction session_unset(), elle a détruit les variables telles que « nom » et « site Web » qui étaient utilisées .

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
// 使用session_unset()函数
session_unset(); 
?>

Sortie :

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

Exemple 2 : Utilisation de la fonction session_destroy()

fonction session_destroy() Détruira toute la session au lieu de détruire les variables. Lorsque session_start() est appelé, PHP définit un cookie de session dans le navigateur. Nous devons également supprimer les cookies pour détruire complètement la session.

<?php 
header("content-type:text/html;charset=utf-8");
// 启动会话
session_start(); 
  
// 检查会话名称是否存在
if( isset($_SESSION[&#39;name&#39;]) ) { 
    echo &#39;<br>&#39; . &#39;会话还有效&#39;.&#39;<br>&#39;; 
} 
else { 
    echo &#39;<br>&#39; . &#39;会话已销毁&#39;; 
} 
  
echo $_SESSION[&#39;name&#39;].&#39;<br>&#39;; 
echo $_SESSION[&#39;website&#39;].&#39;<br>&#39;; 
  
$_SESSION = array(); 
  
// 如果想要终止会话,需要删除会话cookie。
// 注意:这将破坏会话,而不仅仅是会话数据!
if (ini_get("session.use_cookies")) { 
    $params = session_get_cookie_params(); 
    setcookie(session_name(), &#39;&#39;, time() - 42000, 
        $params["path"], $params["domain"], 
        $params["secure"], $params["httponly"] 
    ); 
} 
  
// 最后,销毁会话。
session_destroy(); 
  
?>

Sortie :

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

Explication : lors de l'exécution de l'instruction echo session_id(); signifie que la session précédente a été détruite et que toutes les variables et cookies ont été détruits. Étant donné que toutes les variables sont détruites, lors de la détection de l'existence de la session, elle ira à la sortie conditionnelle else « La session a été détruite ».

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

Remarque : Si vous souhaitez mettre fin à la session, veuillez également supprimer le cookie de session. Cela détruira la session, pas seulement les données de session.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn