这没有任何意义。它适用于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>
如果我var_dump()
response.php 上的$_SESSION
,我会收到:array(0) { }
if(!isset($_SESSION)){ session_start(); }
var_dump($_SESSION);
这怎么可能?
因为它在本地主机上工作但在我的服务器中不起作用..可能是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
我很感激。因为问题是这个。
答案 0 :(得分:2)
将session_start();
作为第一件事,在每页顶部的<?php
标记之后,您希望$_SESSION
数据保持不变
答案 1 :(得分:0)
组合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>
答案 2 :(得分:0)
session_start();
print_r($_SESSION);
将这两行放在你的两个页面中。 (在你的页面的开头&lt;?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);
?>
将上面的代码放在页面顶部并检查是否有任何内容