PHPでセッションを破棄する、というと、session_unset() とか session_destroy() という関数があったりして、どの関数をどのように使えばよいのかちょっと混乱していまいがちです。 そこで、セッションの破棄について少しまとめてみます。
まず、
$_SESSION = array();
とか、
session_unset();
といった方法ですが、両者は同じことをします。 これらの方法でセッション変数を破棄した場合は、サーバに用意されたセッション領域内にあるセッション変数が削除されます。 そして、
session_destroy();
を呼び出した場合は、サーバに用意されたセッション領域そのものがサーバ上から削除されます。 ですので、session_unset() を使えば、セッション変数自体は破棄できますが、それに加えてサーバ上に用意したセッション変数保存用領域も破棄したい場合には、session_unset() と合わせて session_destroy() を呼び出せばよい、ということになります。
...ちなみに、PHPの公式マニュアルページでは「やっちゃダメ!」と警告されているように、
unset($_SESSION);
とした場合は、$_SESSION というスーパーグローバル変数自体が破棄されてしまうため、そのプログラムが実行されている間は $_SESSION にアクセスできなくなってしまいますが、実際には、サーバ上に用意されたセッション領域も、その領域内に保存されているセッション変数も消えずに残っています。 つまり、unset($_SESSION) ; はセッションの削除は出来ていないんですね。