ホームページ  >  記事  >  バックエンド開発  >  PHP の session_unset() と session_destroy() の違いは何ですか

PHP の session_unset() と session_destroy() の違いは何ですか

青灯夜游
青灯夜游オリジナル
2019-03-15 10:34:414983ブラウズ

PHP には、session_unset() と session_destroy() という 2 つのよく似た関数があります。どちらも、セッションに登録されているすべての変数を削除するために使用されますが、両者の違いは何ですか? session_unset() と session_destroy() の違いについては、次の記事で紹介していますので、ご参考になれば幸いです。 [ビデオチュートリアルの推奨: PHP チュートリアル ]

PHP の session_unset() と session_destroy() の違いは何ですか

session_unset() 関数 #session_unset()

この関数はセッション内の変数を削除するだけで、セッションはまだ存在しており、データが切り捨てられるだけです。

基本構文:

session_unset( void )

session_destroy() 関数

##session_destroy()関数は次のようになります。破棄 現在のセッションに関連付けられたすべてのデータ。ただし、セッションに関連付けられたグローバル変数の設定は解除されず、セッション Cookie の設定も解除されません。

基本構文: <pre class="brush:php;toolbar:false">session_destroy( void )</pre>

関連トピックの推奨事項

:
php セッション

(画像、テキスト、ビデオ、ケースを含む)

session_unset() と session_destroy() の違い

session_unset() と session_destroy() の違いを見てみましょう。コード例まず、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; ; 
  
?>

出力:


例 1 : session_unset() 関数の使用 PHP の session_unset() と session_destroy() の違いは何ですか

session_unset() 関数を使用する前に、名前と Web サイトが最初に表示されます。

<?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() 関数を使用すると、使用されていた「name」や「website」などの変数が破壊されました。

<?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(); 
?>
PHP の session_unset() と session_destroy() の違いは何ですか出力:

例 2: session_destroy() 関数の使用 PHP の session_unset() と session_destroy() の違いは何ですか

session_destroy() 関数は破棄します変数を破棄するのではなく、セッション全体を実行します。 session_start() が呼び出されると、PHP はブラウザーにセッション Cookie を設定します。セッションを完全に破棄するには、Cookie を削除する必要もあります。

<?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(); 
  
?>
出力:

説明: echo session_id(); ステートメントを実行すると、異なるセッション ID があることがわかります。セッションはすべての変数と Cookie と同様に破棄されました。すべての変数が破棄されるため、セッションが存在するかどうかを検出すると、else 条件出力「セッションが破棄されました」に進みます。

PHP の session_unset() と session_destroy() の違いは何ですか

注: セッションを終了する場合は、セッション Cookie も削除してください。これにより、セッション データだけでなくセッションも破壊されます。

PHP の session_unset() と session_destroy() の違いは何ですか

関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

以上がPHP の session_unset() と session_destroy() の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。