提交后PHP会话丢失

这毫无意义.它适用于localhost,但不适用于我的服务器.

在提交表单之前,如果我在var_dump()$_SESSION,它会检索以下内容:

array(2) { ["email"]=> string(40) "082b6eff9db5019e6a28f586a679b7f72fab27f4" ["id"]=> int(5) }

形式是这样的:

<form method='POST' action='response.php?type=add_customer'>
    <input type='text' name='customer'/>
    <input type='submit' value='add'/>
</form>

如果我在response.php上的var_dump()$_SESSION我得到:array(0){}

if(!isset($_SESSION)){ session_start(); }
var_dump($_SESSION);

这怎么可能?

因为它工作localhost但不在我的服务器..可能是一个php.ini问题?如果是这样,什么?

编辑(1):将我的代码更改为此(在response.php中):

session_start();

if(isset($_REQUEST['type'])){
    switch ($_REQUEST['type']){
       case 'add_customer': 
        var_dump($_SESSION);
        break;
    }
}

继续不工作.它检索一个空数组.

编辑(2):解决了.
如果有人能向我解释为什么这样:

session_start();
var_dump($_SESSION); // doesn't work
print_r($_SESSION); // doesn't work
echo $_SESSION['id']; // works

我很感激.因为问题是这个.

最佳答案 把session_start();作为每页顶部的<?php标记之后的第一件事,你希望你的$_SESSION数据保持不变

点赞