session_destroy()をしてもセッションデータが残る
session_destroyを行っても、その時点で$_SESSIONのデータが消えるわけではありません。
以下、3ファイルで動作検証
[test.php]
test.php … セッションデータセット
test1.pyp … session_destroy()コール
test2.php … 遷移後の確認用ページ
<?php session_start(); $_SESSION['hoge'] = 123; header('Location: test1.php');
[test1.php]
<?php session_start(); session_destroy(); print_r($_SESSION); ?> <br /> <a href="test.php">セッションセット後、自ページ</a><br /> <a href="test1.php">自ページ</a><br /> <a href="test2.php">別ページ</a><br />
[test2.php]
<?php session_start(); print_r($_SESSION); ?>
test.phpでセットしてtest1.phpへリダイレクト
→ Array ( [hoge] => 123 ) ※session_destroyしても残っている
ただし、その後リロードすると消えます →Array ( )
また、自ページや別ページのリンクを押しても消えます。
即データを削除したい場合は、
以下のように明示的にデータを空にしてあげる必要があります。
$_SESSION = array(); session_destroy();
追記:同ページでも、destroy後、session_start()を呼んだら消えました
session_start(); $_SESSION['hoge'] = 123; session_destroy(); print_r($_SESSION); // Array ( [hoge] => 123 ) session_start(); print_r($_SESSION); // Array ( )