PHP $ _REQUEST $ _GET或$ _POST

Mav*_*ick 7 php post get request

说我有一个表格:

<form action="form.php?redirect=false" method="post">
    <input type="hidden" name="redirect" value="true" />
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

在form.php上:

var_dump($_GET['redirect']) // false
var_dump($_POST['redirect']) // true
var_dump($_REQUEST['redirect']) // true
Run Code Online (Sandbox Code Playgroud)

如何获取注入的查询字符串参数以覆盖该$_POST值,因此$_REQUEST['redirect']将= false

Chr*_*ner 11

如果要在数组中更改$_GETover的优先级,请更改php.ini中的request_order指令.$_POST$_REQUEST

默认值为:

request_order = "GP"
Run Code Online (Sandbox Code Playgroud)

P代表POST,G代表GET,后面的值具有优先权,因此在此配置中,查询字符串中的值将覆盖$_REQUEST数组中POST传递的值.如果你想要POST覆盖GET值,只需像这样切换它们:

request_order = "PG"
Run Code Online (Sandbox Code Playgroud)

您需要重新启动webserver/php才能生效.

(编辑使用Brad建议的更合适的request_order,而不是variables_order)

  • 考虑使用`request_order`代替.它更具体地解决了这个问题. (2认同)