关于PHP的奇怪会话问题

时间:2015-10-05 03:09:47

标签: php forms session post

我有一个非常奇怪的SESSION问题,我已经在我的服务器中使用了很长时间的会话,一切正常。我搜索过& amp;在发布此问题之前,我尝试了5个小时的大量更改。

无论如何,似乎$ _SESSION没有正确更新。我有一个使用POST的表单转到同一页面,当用户提交保存在$ _SESSION中的信息时,我会做一些事情并更新会话变量。在页面中一切看起来都很好因为当我完成时我用新变量保存会话然后做一个var_dump($ _ SESSION ["无论什么"]);它显示了更新的数据。但是当我再次使用新设置提交表单并在重新加载的页面中显示$ _SESSION的数据时,它仍然是旧数据。

我的代码有点复杂,我做的不仅仅是保存数据,而是我在这里恢复了这种情况:

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_dump具有相同的值仍然显示原始值(FALSE)。

有什么想法吗?

更新:即使我转到新页面并执行此操作:

session_start();
var_dump($_SESSION["whatever"]);

它显示旧数据,而不是更新数据。

PS:顺便说一句,我有许多其他变量不在if / else语句中,并且可以正确保存,并且会话确实从其他上一页的值更新。

新的更新:我使用jQuery来显示带有滑块和旋钮的表单,如果我消除jQuery一切正常!这很奇怪!我在互联网上看到过这样的一切,没有任何想法?

1 个答案:

答案 0 :(得分:0)

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">