【问题标题】:$_POST does not get unset$_POST 不会取消设置
【发布时间】: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个请求。

标签: php post


【解决方案1】:

使用$_REQUEST 代替$_POST

【讨论】:

  • 我想你误解了这里的问题。我不需要 ScriptC 上的 scriptA 数据。它已经出现在 ScriptC 中,在我看来是错误的。不应该。按照我设计/编程的方式,ScriptC 应该有来自 scriptB 的 POST 数据,而不是 ScriptA。但出于某种原因,它确实如此。
  • 您希望在第 3 页上显示第 1 页的数据。但是令人不安的帖子会删除之前的数据。
  • 你误解了他想要什么,甚至你的剧本都错了!您不能在表单字段中 print_r :-D 至少放 print_r($scriptAarrayB, 1) 但仍然错误
  • @Jhilom,你错了。再读一遍。在我的原始帖子以及对您的评论中,我声明我不希望第 3 页上的第 1 页数据。
  • 好的,我明白了。我真的误解了这个问题。好的,使用 $_REQUEST 而不是 $_POST。我认为这将解决您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 2011-07-25
  • 1970-01-01
  • 2011-12-13
  • 2018-03-22
  • 1970-01-01
相关资源
最近更新 更多