繁体   English   中英

提交后PHP会话丢失

[英]PHP session is lost after submit

这毫无意义。 它适用于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数据能够持久存在

将GET和POST结合起来并不好。 将表单更新为以下内容

<form method="POST" action="response.php">
    <input type="hidden" name="type" value="add_customer" />
    <input type="text" name="customer" />
    <input type="submit" value="add" />
</form>
session_start();
print_r($_SESSION);

把这两行放在你的两个页面中。 (在你的页面的开头<?php标签之后,在任何包含之前,在任何输出之前(空格,空格等)之前
在正常情况下,这些应该打印完全相同。

现在,由于您的第二页没有任何会话变量,我猜测会话未设置。 所以我最好的猜测是阻止/阻止你的会话或删除/取消它们。

您确定不加载/包含以下行之外的任何内容吗?

if(isset($_REQUEST['type'])){

编辑1:让我们尝试一下:
在www目录中创建文件夹会话。 为初学者设置777的权限。

<?php
session_save_path('/home/project/www/sessions');
ini_set('session.gc_probability', 1);
session_start();
print_r($_SESSION);
?>

将上面的代码放在页面顶部,检查是否有任何结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM