PHP会话在提交后丢失

PHP会话在提交后丢失,php,session,Php,Session,这毫无意义。它在localhost中工作,但在我的服务器中不工作 提交表单之前,如果我var\u dump()会话$\u将检索以下内容: array(2) { ["email"]=> string(40) "082b6eff9db5019e6a28f586a679b7f72fab27f4" ["id"]=> int(5) } 表格如下: <form method='POST' action='response.php?type=add_customer'> &l

这毫无意义。它在localhost中工作,但在我的服务器中不工作

提交表单之前,如果我
var\u dump()
会话
$\u将检索以下内容:

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>
这怎么可能

因为它在本地主机上工作,但在我的服务器上不工作。这可能是php.ini的问题吗?如果是,什么

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

继续不起作用。它检索一个空数组

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

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

我很感激。因为问题是这样的。

Put
session_start()作为
之后的第一件事,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>

把这两行放在你的两页上。(就在页面最开始处的<?php标记之后、任何包含之前、任何输出之前(空格、bom字符等)
在正常情况下,这些打印内容应完全相同

现在,由于您的第二个页面没有任何会话变量,我猜会话没有设置。因此我最好的猜测是有什么东西正在阻止/阻止您的会话或删除/取消设置它们

您确定没有加载/包含任何高于下一行的内容吗

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);
?>


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

检查php.ini中的session\u save\u path…尝试不带条件,
如果(!isset($\u session)){
只需放置
session\u start();
不确定为什么要这样做…您的this code
如果(!isset($\u session)){session\u start()}var\u dump($\u session;
毫无意义。在检查完$\u session()之后,用户永远不会启动$\u session()。事实上,如果没有session\u start(),则无法使用$\u session在脚本的顶端。我不知道它在你的localhost@LozCherone“请让代码”看到我编辑过的文章。@user1844933,我的服务器具有以下结构:/home/project/public\u html/home/project/public\u ftp/home/project/www在它们中我都看不到php.ini。我可以将文件添加到其中一个吗文件夹?尝试完全删除if和just var_dump POST、GET、REQUEST&SESSION以查看正在发送的内容。我已将my response.php文件更改为仅此:它将继续检索我数组{0}。我检查了chrome Cookie,在我的网站中有6个Cookie,包括PHPSESSID。我直接输入URL:mywebsite.com/response.php(不提交表单),我收到数组{0}我将response.php文件更改为仅此:
,它继续检索我的数组{0}。我已经检查了chrome Cookie,我的网站中有6个Cookie,包括PHPSESSID。我直接输入URL:(不提交表单),然后我收到数组{0}太多了。@user3243925不知道-不知道为什么第三个解决方案会起作用。完全让人困惑。我也是。我还用那个代码创建了另一个空白页,它是一样的。说真的,我不明白。@user3243925也许他们(服务器管理员)将服务器临时文件夹中的会话保存为字符串而不是数组/超全局?这很奇怪。无论如何,很好,你找到了一个有效的解决方案。你也可以联系他们,尝试找出他们设置中的错误,并向他们提供一个问题的工作示例。
session_start();
print_r($_SESSION);
if(isset($_REQUEST['type'])){
<?php
session_save_path('/home/project/www/sessions');
ini_set('session.gc_probability', 1);
session_start();
print_r($_SESSION);
?>