警告:filter_input():尚未实现INPUT_REQUEST

Jav*_*ava 1 php netbeans-8

我想修改这一行.

原来,它是

$cmd = $_REQUEST["cmd"];
Run Code Online (Sandbox Code Playgroud)

然后,我通过阅读此帖子在Stackoverflow上的链接改为此.

$cmd = filter_input(INPUT_REQUEST, "cmd");
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到底部错误:

Warning: filter_input(): INPUT_REQUEST is not yet implemented
Run Code Online (Sandbox Code Playgroud)

当我读到其他文章的链接时,它说"INPUT_REQUEST不是有效类型".

什么是解决方案?

cee*_*yoz 6

根据文档(以及您的错误消息以及您引用的SitePoint Q&A的答案),它不是有效参数.该文件说:

INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,或INPUT_ENV.

没有INPUT_REQUEST这个功能的东西.

什么是解决方案?

使用实际存在的参数之一.


tim*_*ith 6

TL;DR 如果您想使用filter_input()的过滤器选项,请选择POSTGET、 或COOKIE作为您的请求类型。但这不是您唯一的选择。

注意: GET通常用于发送检索数据请求的详细信息,而POST用于提交要存储在服务器上的数据。

您有几个选择:

事实上,到目前为止(从 PHP 7.2 开始)只INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV被实现了。但是你仍然可以得到它的行为。

自己实现 INPUT_REQUEST :(我不建议这样做)您可以使用INPUT_GET,INPUT_POST并通过运行一个INPUT_COOKIE来实现您对当前非现存的行为所期望的行为INPUT_REQUEST,如果没有得到任何运行下一个等等,作为如下。

`$test_filter = filter_input(INPUT_COOKIE, 'test') ?? filter_input(INPUT_POST, 'test') ?? filter_input(INPUT_GET, 'test');`
Run Code Online (Sandbox Code Playgroud)

使用 INPUT_GET 或 INPUT_POST:如果您知道将使用 PUSH 或 GET 中的哪一个来发送请求,则使用相应的选项。INPUT_GET例如,将检索在 url 的查询字符串中发送的数据。

抑制超全局警告:您可以通过转到Windows : Tools -> Options -> Editor -> Hints Mac :NetBeans -> Preferences -> Editor -> Hints并取消选择Superglobals或您不想要的任何子集来选择 netbeans 向您显示的警告。

最后注意: filter_input()有第三个参数是实际的过滤器部分;如果您无论如何都在使用 filter_input ,那么您也可以实际使用过滤器。如果省略参数,则:

如果省略,将使用 FILTER_DEFAULT,相当于 FILTER_UNSAFE_RAW。这将导致默认情况下不进行过滤。