php - 如何在 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<
解决方案
请确保在文件开头使用 session_start 并使用 isset 函数检查是否有任何 POST 数据
session_start()
if(isset($_POST['clientEmail'])){
$_SESSION['selectedClient'] = $_POST['clientEmail'];
header("Location: .\?p=home");
exit(0);
}
推荐阅读
- python - 使用正则表达式在特定单词之后查找缩写
- .htaccess - 使用 .htaccess 会出现 500 错误,但适用于文件
- c++ - boost::Beast 错误 WebSocket 帧有效负载不是有效的 utf8
- apache-kafka - 为 docker 内的 kafka 设置默认的 segment.bytes
- javascript - 使用 react-redux 进行 Firestore 分页
- python - 使用正则表达式(Python)在特定字符序列后拆分字符串
- vue.js - 获取tiptap-vuetify 以在Vue Nuxt 应用程序中使用“提及”
- java - 使用正则表达式在 JSON 中查找键并将它们放在 java 中的映射中
- node.js - 如何包含仅连接到数组中一项的模型?
- apache-kafka - 使用 confluent-kafka-python 设置主题模式