这里缺少什么?这是我的PHP文件:
<?
session_start();
echo print_r($_SESSION);
echo "<br>";
echo print_r($_POST);
// Save input in session
$_SESSION = $_POST;
echo "test1";
?>
<br>
test2
这个文件是从表单提交中访问的,我确信帖子数据是存在的。输出为:
数组([login]=>1)1
数组([名称]=>测试[类型]=>测试)1
测试2
这对我来说毫无意义。session
内容和post
内容打印出来没有问题。
但是,$_SESSION = $_POST;
似乎失败了,直到?>
,脚本的其余部分都没有给出任何响应,这是显而易见的,因为test1
文本没有打印出来。
我不知道$_SESSION = $_POST;
发生了什么。我在SO和其他地方找到的所有问题都提供了在会话中存储帖子数据的方法。
我知道在任何输出之前都需要session_start();
。在这种情况下,是否还需要其他东西?
我错过了什么?
更新-测试文件
完整测试文件(链接已删除)的确切代码为:
<?
session_start();
?>
<html>
<head>
</head>
<body>
<?
echo print_r($_SESSION);
echo "<br>";
echo print_r($_POST);
// Save input in session
$_SESSION = $_POST;
echo "test1";
?>
<p>test2</p>
<form method="post" action="test.php">
Type something to test: <input type="text" name="testfield" id="testfield">
<input type="submit" value="Submit">
</form>
</body>
</html>
更新-已解决
好的,现在解决了。但这很奇怪。。。
这个问题显然是由评论引起的。//
停止脚本在<?..?>
括号内运行。当我删除注释// Save input in session
时,它就工作了。。。?
现在我在这里错过了什么?它必须是一些php设置或其他什么。或者可能是某些文件或脚本数据发生了更改。我想,自从@CodeCaster让它工作后,我的电脑上发生了一些事情……但评论在其他地方也能工作吗?以前有人见过这个吗?
您是否尝试过使用$_SESSION['name'] = $_POST['name'];
?
在我用PHP编程的整个过程中,我从未使用过$_SESSION = $_POST;
,也从未见过它。
希望这能有所帮助。
i会将$_POST替换为foreach
,并将其添加到$_SESSION['mypostvars']
中。请记住,在存储$_POST之前,您应该验证它们。
这可能是PHP将$_POST合并到$_SESSION 的重复
使用Xampp,该示例运行良好。"test1"打印在成功发布之前和之后。使用PHP 5.3.8。
在Linux上用PHP 5.3.6进行了测试,在这两种情况下也可以很好地打印"test1"。
因此,PHP似乎不是问题所在。
您可以修改$_SESSION,但我认为您不允许这样重新分配它。相反,将$_POST的成员复制到其中。尝试使用array_merge(),但如果不起作用,则编写foreach循环来执行此操作。