【问题标题】:Why does filter_input() not pick up arbitrary POST data?为什么 filter_input() 不获取任意 POST 数据?
【发布时间】:2014-11-16 14:16:19
【问题描述】:

我注意到在以编程方式设置 POST 数据时,PHP 函数filter_input() 不会检索数据。

例如:

<?php
$_POST['test'] = 123;
$test = filter_input(INPUT_POST, 'test');
var_dump($test);

// Output: null
?>

如果filter_input从$_POST检索数据,并且$_POST['test']是一个有效的引用,为什么它返回null?

【问题讨论】:

  • 因为它的来源不是由用户输入提供的。你基本上回答了你自己的问题。
  • 有趣的是我仍然一无所知。请详细说明。
  • 这是不言自明的。你去过the manual吗?它特别声明“INPUT_GET、INPUT_POST、INPUT_COOKIE、INPUT_SERVER 或 INPUT_ENV 之一”,然后是一些。没有提到以编程方式
  • 我明白这一点。如果你注意到了,我什至在示例中包含了INPUT_POST。如果 filter_input 从 $_POST 检索数据,并且 $_POST['test'] 是有效引用,为什么它返回 null?
  • @reformed 因为它来自代码!您必须提交表格并将请求发回!然后 filter_input 工作!

标签: php forms post


【解决方案1】:

$_POST 是解析后的 POST 正文,变成了一个数组。当您向$_POST 添加一个键时,您是在 POST 正文数据已被解析之后将其添加到数组中。

当您使用filter_input 时,它会从实际的 POST 正文中获取数据,而不是从 $_POST

【讨论】:

  • 谢谢。这是了解 filter_input 如何与 $_POST 相关的有用答案。你会不会碰巧知道filter_input 的实现在哪里可以找到?
猜你喜欢
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2020-04-02
  • 2011-09-26
  • 2014-10-24
  • 2015-09-24
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多