【发布时间】:2012-08-30 18:26:50
【问题描述】:
scriptA.php 有一个将 POST 发送到 scriptB.php 的表单。 scriptB.php 也是一种将 POST 数据发送到 scriptC.php 的表单。当我在 scriptC.php 上 print_r($_POST) 时,数据不是 scriptB 而是 scriptA 的!
ScriptB 甚至调用了似乎有效的 unset($_POST)。它似乎有效,因为在 scriptB 上还有一个 print_r($_POST) 在 unset($_POST) 之后显示它是空的。
那么 scriptC 是如何得到 scriptA 的 POST 数据的呢?我已经取消设置()它,并提交了一个新的 POST 表单......但它不会消失!我要疯了。
尝试了多种浏览器,登录和退出网站...到目前为止没有任何效果。
scriptA.php
<form method="post" action="scriptB.php">
{form inputs}
</form>
scriptB.php:
<?php
unset($_POST);
print_r($_POST); //blank
?>
<form method="post" action="scriptC.php">
{form inputs, different than scriptA}
</form>
scriptC.php:
<?php
print_r($_POST); // displays data fields from scriptA instead of scriptB
?>
【问题讨论】:
-
我们可以看看一些代码吗?
-
尝试直接提交scriptB表单,看看会发生什么。
-
重申这个问题,因为我认为 Jhilom 很困惑... ScriptC 的 print_r($_POST) 显示来自 ScriptA 的数据。这是不希望的。我想要发生的是 ScriptC 的 print_r($_POST) 来显示来自 ScriptB 的数据。你会认为这会发生,因为 ScriptB 是提交给 ScriptC 的那个......
-
在 print_r 之后的 scriptB.php 上尝试
unset($_POST); -
而
unset(...)应该没有任何区别;$_POST参数的作用域只有1个请求。