我的问题是运行以下代码时会话变量没有被取消设置。怎么了?
<?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");
?>
试试这个语法(在 unset 中使用变量名):
<?php
session_start();
if(isset($_SESSION['views']))
unset($_SESSION['views']);
?>
我猜你的会话集中已经有变量,否则没有什么可以“取消设置”。
使用 session_unset 会话本身仍然存在,因为它相当于做:
$_SESSION = array();
当然,除非您使用的是 PHP 4.0.6 或更低版本,否则您应该使用:
unset ($_SESSION['varname']);
可以这么说,您的代码没有任何“错误”。