php - 使用后清除 session 变量

标签 php session forms post authentication

是否可以使用 session 变量,然后直接取消设置?

示例:

//====
//Process Form
if ($_POST['Submit']) {
    $update = $userSettings->update($_POST);

    //If there are form errors
 if (!$update) {
        //Load the errors into an array
        $errors = $update[1];
    } else {
        //Set the session
        $_SESSION['showUpdated'] = true;

        //Redirect to this page
        header("Location: http://www.mysite.com/settings");
    }
}

//==================

if ($_SESSION['showUpdated']) {
 echo "Settings Updated";
    unset($_SESSION['showUpdated'];
}

所以提交表单后,如果没有错误:

  • 设置一个 session 来表明表单提交正常
  • 重新加载页面(以防止重新提交 POST 数据)
  • 如果设置了“showUpdated” session 变量,则显示“已更新”消息
  • 取消设置 session 变量(这样我们在下次重新加载时就看不到该消息)

目前的问题是,如果您立即取消设置 session 变量;就好像您在“如果存在”部分之前取消了它的设置。

有什么解决办法吗?这是最好的方法吗?

非常感谢!

最佳答案

我注意到原始示例中的一个小错误可能会导致其他问题。

unset($_SESSION['showUpdated'];

需要

unset($_SESSION['showUpdated']);

unset 中不包含结尾 ) 将导致错误。

关于php - 使用后清除 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347672/

相关文章:

php - 正确打印网站

php - 如何用 fwrite() 中的值替换 file_get_contents() 中的变量?

javascript - 寻求更优雅的解决方案来防止 preventDefault() 困境

mysql - 如何将我网站上的直接借记信息传递给直接借记提供商

node.js - 无法在 Express.js 中使用 connect-redis

Laravel session 变量一旦重定向到支付网关并返回,就会变为 Null

php - 根据下拉选择从数据库中填充另一个选择下拉列表

php - 我如何判断我的 Apache2+PHP 是否使用 CGI/FCGI?

php - 使用 WordPress 在 Web 服务器上运行 C++ 应用程序

ruby-on-rails - 将用户代理和 IP 添加到存储的 session -RecordNotSaved -Rails