私の問題は、以下のコードを実行したときにセッション変数が設定解除されなかったことです。なにが問題ですか?
<?php
session_start();
session_unset();
//session_destroy();
header("location: user_form.php");
?>
実際にセッションを作成していません。セッション エンジンを開始しましたが、セッション変数を作成していません。たとえば、セッション変数 $_SESSION['userid'] がある場合、その値を設定解除するか、期限切れにするか、その値をヘッダーリダイレクトの if 句に失敗するものに設定できます。
通常、私は次のようなことをします:
<?php
session_start();
if(!empty($_SESSION) && is_array($_SESSION)) {
foreach($_SESSION as $sessionKey => $sessionValue)
session_unset($_SESSION[$sessionKey]);
}
session_destroy();
header("Location: user_form.php");
?>
次の構文を試してください (未設定の変数名を使用してください)。
<?php
session_start();
if(isset($_SESSION['views']))
unset($_SESSION['views']);
?>
セッションセット内にすでに変数があると思います。そうしないと、「設定を解除」するものは何もありません。
session_unset を使用すると、次のことと同等であるため、セッション自体は引き続き存在します。
$_SESSION = array();
もちろん、PHP 4.0.6 以下を使用している場合を除き、以下を使用することが期待されます。
unset ($_SESSION['varname']);
に従ってsession_unset
。
いわば、コードに「問題」はありません。