session_destroy()
はセッション全体を終了します。つまり、PHPのセッション記憶域から削除され、再度使用することはできません。セッション変数とCookieの設定を解除するだけの場合でも、セッションはアクティブなサーバー側になり、セッション変数が再設定され、元のセッションIDのCookieが再びクライアントに送信されると、リサイクルされる可能性があります。
別の言い方をすると、セッションは、基本的に、そのセッションに登録されたセッション変数とともに、Webサーバーのどこかに格納された秘密のIDで構成されます。セッションIDはクライアントに(通常はクッキーとして)送信されるので、クライアントは後の要求でセッションの「所有者」として識別することができます。セッションが既に作成し、そこに登録された変数を持っているされていると仮定すると、ここでの機能は何をすべきかの概要です:
session_start()
は、クライアントが$_SESSION
にセッションレジストリから送信されたセッションIDに属するすべてのセッション変数をインポート配列
session_unset()
またはunset()
$_SESSION
上の変数は、現在のセッションに登録されているすべての変数をクリアしますが、それはがない明確なクライアントのセッションCookieの設定解除セッション自体
- は、CLIへの合図になるだろう呼び出しますセッションが終了したが、このは、はサーバー上のセッションレジストリからセッションを削除しません。
session_destroy()
は、セッションを実際にセッションレジストリから削除する唯一の機能であり、文字通りセッションを破棄します
session_destroy()
は、すべてのセッション変数の登録を解除しますが、それは現在実行中ですスクリプトで$_SESSION
配列をクリアしないので、それはバグやセキュリティ問題を防ぐために、セッション変数の設定を解除するためにまだ良い考えです。 (PHP 4.0.6以下または$HTTP_SESSION_VARS
)$_SESSION
が使用される場合にunset()
を使用し、
:関連ノートで
は、PHPマニュアルは、
$_SESSION
から
session_unset()
むしろ解除キーを使用しないことをお勧めしますセッション変数、つまり
unset($_SESSION['varname']);
の登録を解除します。
http://us.php.net/manual/en/function.session-destroy.php –
ありがとう、私は何度も読んだことがありますが、それは何を理解できません。なぜそれが本当にセッションを破壊しないのか?セッションを破壊するには、さらに2つのステップを使用する必要があります。しかし、実際にはsession_destroy()は私のためにそれらのステップを行う必要があります。 – Green
*別のコード*の答えがあなたに必要な情報を提供している(私はそれができなかった方法を見ることができません)、あなたはそれを受け入れるでしょうか?これは通常、ここで何が行われるのかです:p – RobinJ