为什么这个`$ _SESSION = $ _POST`失败了?

时间:2012-07-28 12:51:34

标签: php session post

我在这里缺少什么?这是我的PHP文件:

<?
session_start();

echo print_r($_SESSION);
echo "<br>";
echo print_r($_POST);

// Save input in session
$_SESSION = $_POST;
echo "test1";
?>

<br>
test2

从表单提交访问此文件,我确定发布数据存在。输出是:

  

数组([登录] =&gt; 1)1
  数组([name] =&gt; test [type] =&gt; test)1
  TEST2

这对我没用。 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>

更新 - 已解决?

好的,现在已经解决了。但这是STRANGE ......

问题显然是由评论引起的。 //阻止脚本在<?..?>括号内运行。当我删除评论// Save input in session时,它可以正常工作......?

现在我在这里错过了什么?它必须是一些PHP设置或其他东西。或者可能是某些已更改的文件或脚本数据。我想,既然@CodeCaster有它工作,我的电脑就会发生这样的事情......但评论在其他地方有用吗?有没有人见过这个?

4 个答案:

答案 0 :(得分:5)

您是否尝试过使用$_SESSION['name'] = $_POST['name'];

在我编写PHP的整个过程中,我从未使用$_SESSION = $_POST;,也从未见过它。

希望这有帮助。

答案 1 :(得分:2)

我会改为foreach $ _POST并将其添加到$_SESSION['mypostvars']。请记住,在存储它们之前,您应该验证并验证$ _POST。

这可能是PHP merge $_POST into $_SESSION

的重复

答案 2 :(得分:1)

使用Xampp,该示例工作得很好。 'test1'打印在成功发布之前和之后。使用PHP 5.3.8。

使用PHP 5.3.6在Linux上测试,在两种情况下都可以正常打印'test1'。

所以,这似乎不是PHP的问题。

答案 3 :(得分:-1)

您可以修改$ _SESSION但我不认为您可以像这样重新分配它。而是将$ _POST的成员复制到其中。尝试使用array_merge(),但如果这不起作用,那么编写一个foreach循环来完成它。