首页 > 解决方案 > 如何在 PHP 中保持在同一页面上的同时更新会话变量?

问题描述

在我的页面上,用户可以选择客户。当他们选择一个时,此选择将​​设置在 中$_SESSION['selectedClient']。然后,用户可以选择一个不同的客户端,该客户端必须覆盖当前的$_SESSION['selectedClient']. 因此,当我尝试更新时$_SESSION['selectedClient'],它会告诉我会话变量已更新。但是当我重新加载页面时,它将显示上一个/第一个选择的客户端。

这是我目前必须尝试的一段代码:

if($_POST['clientEmail']){
   $_SESSION['selectedClient'] = $_POST['clientEmail'];
   echo '<script>document.location=\'\?p=home\';</script>';
}

回显导致我在其中设置会话 var 并尝试更新会话 var 的同一 PHP 文件,在这种情况下需要更新。

$_SESSION['selectedClient']在分配新帖子之前,我尝试取消设置,例如:

if($_POST['clientEmail']){
    unset($_SESSION['selectedClient']);
    $_SESSION['selectedClient'] = $_POST['clientEmail'];
    echo '<script>document.location=\'\?p=home\';</script>';
}

我在谷歌上找不到任何可以帮助我的东西,这就是为什么我决定创建一个 SO 帐户并在这里提问。随时询问是否需要更多信息。

编辑:当$_SESSION['selectedClient']设置并且我选择一个新客户时,帖子包含新选择的值/客户。刷新后,帖子为空,会话恢复到之前选择的客户端。

选择新客户:

_POST['clientEmail'] = >lol@lol.com<
_SESSION['selectedClient'] = >lol@lol.com<

刷新后:

_POST['clientEmail'] = ><
_SESSION['selectedClient'] = >login@login.com<

标签: phpsession

解决方案


请确保在文件开头使用 session_start 并使用 isset 函数检查是否有任何 POST 数据

session_start()
if(isset($_POST['clientEmail'])){
   $_SESSION['selectedClient'] = $_POST['clientEmail'];
   header("Location: .\?p=home");
   exit(0);
}

推荐阅读