首页 > 解决方案 > 以正确的方式取消设置会话

问题描述

我试图使用会话变量将错误消息传递到另一个页面。在处理程序页面上,会话以以下方式初始化:

function sess() {
    $index = $_POST['name'];
    $_SESSION['error'] = ($index == '') ? 'name cannot be empty' : $index . " is a good name";
    header("Location: http://website-name.com/form");
}; sess();

在另一页上是这样的:

if(isset($_SESSION['error'])) {
    echo $_SESSION['error']; unset($_SESSION['error']);
};

现在,如果提交的表单带有一个空字段,则错误name cannot be empty将成为会话的值。之后,如果名称被设置,会话的值不会改变但仍然返回name cannot be empty

我检查了它是否与在函数中调用会话这一事实有关。不知道!但在网上找到了一种使用 session_unset 取消设置所有变量的方法。但它实际上是我想要取消设置的一个会话变量,我发现了类似session_unset($_SESSION['error']). 但是,使用它并没有取消设置所有会话,而是在$_SESSION['error']函数中不再设置,除非我使用unset($_SESSION['error'])不会终止设置的第一个会话。

那么实际上出了什么问题呢?工作方式有何unset_session()不同unset()?它与在函数内部有什么关系?据我所知,$_SESSION[]它是一个全局变量,就像$GLOBALS[]可以在任何范围内访问一样。

标签: phpsessionunset

解决方案


推荐阅读