0

我在这里想念什么?这是我的 PHP 文件:

<?
session_start();

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

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

<br>
test2

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

数组 ( [登录] => 1 ) 1
数组 ( [名称] => 测试 [类型] => 测试 ) 1
test2

这对我来说毫无意义。内容sessionpost内容打印没有问题。

但是$_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 让它工作以来,我的电脑上发生了一些事情......但是评论在其他任何地方都有效吗?有没有人见过这个?

4

4 回答 4

5

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

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

希望这可以帮助。

于 2012-07-28T13:00:48.800 回答
2

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

这是PHP 合并 $_POST 到 $_SESSION的可能重复项

于 2012-07-28T13:01:08.467 回答
1

使用 Xampp,该示例运行良好。'test1' 打印在成功发布之前和之后。使用 PHP 5.3.8。

在 Linux 上使用 PHP 5.3.6 进行测试,在两种情况下都可以很好地打印“test1”。

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

于 2012-07-28T13:57:06.813 回答
-1

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

于 2012-07-28T13:00:59.887 回答