为什么“$_SESSION=$_POST”失败


Why does this `$_SESSION = $_POST` fail?

这里缺少什么?这是我的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循环来执行此操作。