[英]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.