PHP上的奇怪会话问题
我遇到了一个非常奇怪的会话问题,我在服务器上处理会话已经很长时间了,一切都很好。在发布此问题之前,我已经搜索并尝试了5个小时的大量更改 无论如何,$\u会话似乎没有正确更新。我有一个使用POST的表单,它会转到同一页面,当用户提交其保存在$\u会话中的信息时,我会做一些事情并更新会话变量。页面中的一切看起来都很好,因为完成后,我用新变量保存会话,然后执行var_转储($_session[“whatever”]);它显示了更新的数据。但是,当我再次提交带有新设置的表单,并在重新加载的页面中显示$\u会话的数据时,它仍然是旧数据 我的代码有点复杂,我做的不仅仅是保存数据,而是在这里恢复这种情况:PHP上的奇怪会话问题,php,forms,session,post,Php,Forms,Session,Post,我遇到了一个非常奇怪的会话问题,我在服务器上处理会话已经很长时间了,一切都很好。在发布此问题之前,我已经搜索并尝试了5个小时的大量更改 无论如何,$\u会话似乎没有正确更新。我有一个使用POST的表单,它会转到同一页面,当用户提交其保存在$\u会话中的信息时,我会做一些事情并更新会话变量。页面中的一切看起来都很好,因为完成后,我用新变量保存会话,然后执行var_转储($_session[“whatever”]);它显示了更新的数据。但是,当我再次提交带有新设置的表单,并在重新加载的页面中显示$\
session_start();
var_dump($_SESSION["whatever"]);
if(isset($_POST["whatever"])){
$_SESSION["whatever"]=$_POST["whatever"];
} else {
$_SESSION["whatever"] = FALSE;
}
var_dump($_SESSION["whatever"];
因此,下面的var_dump确实显示了表单中输入的新值,这意味着它已正确保存,但没有!因为当我再次输入表单时,第一个var转储应该与上一页中的最后一个var_转储具有相同的值,仍然显示原始值(FALSE)
有什么想法吗
更新:即使我转到一个新页面并只执行以下操作:
session_start();
var_dump($_SESSION["whatever"]);
它显示的是旧数据,而不是更新的数据
顺便说一句,我还有许多其他变量不在if/else语句中,它们确实保存正确,并且会话确实从上一页的其他值更新
新的更新:我使用jQuery来显示带有滑块和旋钮的表单,如果我去掉jQuery,一切都会很好!真奇怪!我在互联网上没见过这样的东西,有什么想法吗?session\u start();
session_start();
var_dump($_SESSION["whatever"]);
if(isset($_POST["whatever"])){
$_SESSION["whatever"]=$_POST["whatever"];
} else {
// Check if there is a session variable set
if (!isset($_SESSION['whatever'])) {
// If the session variable isn't set, initialize it to false
$_SESSION["whatever"] = FALSE;
} else {
// Set the $whatever variable to be the value of the session variable
$whatever = $_SESSION['whatever'];
}
}
var_dump($_SESSION["whatever"];
<!-- In the HTML -->
<input name="whatever" value="<?php echo $whatever ?>" type="text">
变量转储($_会话[“任意”]);
如果(isset($_POST[“whatever”])){
$_SESSION[“whatever”]=$_POST[“whatever”];
}否则{
//检查是否设置了会话变量
如果(!isset($\u会话['whatever'])){
//如果未设置会话变量,请将其初始化为false
$\u SESSION[“whatever”]=FALSE;
}否则{
//将$where变量设置为会话变量的值
$whatever=$_会话['whatever'];
}
}
变量转储($_会话[“任意”];
session_start();
变量转储($_会话[“任意”]);
如果(isset($_POST[“whatever”])){
$_SESSION[“whatever”]=$_POST[“whatever”];
}否则{
//检查是否设置了会话变量
如果(!isset($\u会话['whatever'])){
//如果未设置会话变量,请将其初始化为false
$\u SESSION[“whatever”]=FALSE;
}否则{
//将$where变量设置为会话变量的值
$whatever=$_会话['whatever'];
}
}
变量转储($_会话[“任意”];
我已经禁用了缓存:您可能尝试过命名会话,但忘记了更新所有页面或还原所有更改?您检查过服务器上的磁盘空间吗?我曾经在磁盘已满时观察到类似问题。谢谢,但是空间已经够多了,大约1 TB可用。我已经禁用了缓存:SHa您是否曾经尝试过命名会话,但忘记了更新所有页面或还原所有更改?您检查过服务器上的磁盘空间吗?我曾经在磁盘已满时发现类似问题。谢谢,但空间已经足够了,大约1 TB可用。我显然是在添加表单,这只是一个示例代码。我的意思是什么即使当我更新会话时,它在最后一个var_转储中正确显示,当我在重新加载的页面中检索会话时,它仍然显示旧会话,而不是更新的会话。我显然在添加一个表单,这只是一个示例代码。我的意思是,即使我更新会话时,它在最后一个var_转储中正确显示我在重新加载的页面中检索会话,它仍然显示旧会话,而不是更新的会话。