找出PHP中的HTTP方法[重复]

Posted

技术标签:

【中文标题】找出PHP中的HTTP方法[重复]【英文标题】:Find out HTTP method in PHP [duplicate] 【发布时间】:2010-12-05 00:22:19 【问题描述】:

如何找出当前请求使用的方法(通常是 GET 或 POST)?

【问题讨论】:

【参考方案1】:
$_SERVER['REQUEST_METHOD']

见the docs。它将包含大写的请求方法(即“GET”、“HEAD”、“POST”、“PUT”)。

【讨论】:

【参考方案2】:

检查时

$_SERVER['REQUEST_METHOD']

似乎是显而易见的选择,因为有些人提倡安全的超全局替代方案(Is using superglobals directly good or bad in php? 和类似问题),因此可以改为使用自动消毒

filter_input( \INPUT_SERVER, 'REQUEST_METHOD', \FILTER_SANITIZE_SPECIAL_CHARS )

(您当然可以使用其他过滤器,例如FILTER_SANITIZE_STRING - 完整列表请参见here)。

显然,在常规 (GET/POST) 的情况下,没有什么需要消毒的,但好习惯仍然是 IMO 的好习惯。

http://php.net/manual/en/reserved.variables.server.php

http://php.net/manual/en/function.filter-input.php

【讨论】:

如果只想知道是GET还是POST之类的,不需要过滤。但是,您想测试该方法,如果未按预期匹配,您可以回退到“无法理解的 HTTP 方法”错误(HTTP 代码 405)。 en.wikipedia.org/wiki/List_of_HTTP_status_codes#405 @AlexisWilke 就像我说的,in the regular (GET/POST) case there ain't anything to sanitize; OTOH,如果结果(变量的值)是,例如(无论出于何种原因)进一步用作例如输出字符串或自动生成的脚本主体的一部分,并且(同样,无论出于何种原因)如果 Web 服务器被窃听 (and there are bugs in web servers) 并且容易注入无效的请求方法,这可能可能(尽管它是当然极不可能)result in arbitrary code execution or data generation.

以上是关于找出PHP中的HTTP方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何找出 Go 语言中的 CPU 数量?

php防止表单重复提交的几种方法

使用 POST 方法的 Swift 中的 HTTP 请求

在 PHP 中使用 HTTP 的 HEAD 命令最简单的方法是啥?

表单提交有那两种方式?PHP如何获得表单提交的数据?

JavaScript 数组常见操作