例如,如果我想使用代码:
$foo = $_POST['foo']. $_GET['foo'];
获取一个值,无论是通过 POST 还是 GET 传递,这是可以接受还是不好的做法?
在您的答案中看不到任何未设置的内容,尽管您可以使用 $_REQUEST['foo']
,因为这会考虑$_POST
和$_GET
但同样,您的代码会很脏,例如我调整了method
值,对于登录表单,用户可以轻松攻击您的网站......
所以要明智,使用$_GET[]
和$_POST[]
,而不是使用松散的$_REQUEST[]
如果以任何方式使用$_REQUEST
请确保使用条件来检查请求是否GET
或使用POST
$_SERVER['REQUEST_METHOD']
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
//Do something
}
选择:
$foo = isset($_REQUEST['foo']) ? $_REQUEST['foo'] : null;
更多详情: http://php.net/manual/pt_BR/reserved.variables.request.php
获取值,无论是通过 POS 还是 GET 使用此
值$foo = $_REQUEST['foo'];
如果您将开发服务器 PHP 配置为抛出所有警告,您将发现。
你为什么要使用 . 运算符,如果我没记错的话,这将连接结果,因为上面建议使用 $_REQUEST 将是更好的方法。
是的,这很糟糕。有两个问题:
- 它会发出警告
- 串联不适合此用例
如果你想从 $_POST
或 $_GET
获取密钥,并且你不在乎密钥存在于哪一个中,你可以使用 $_REQUEST 超全局和以下习惯用法:
$var = isset($_REQUEST['foo']) ? $_REQUEST['foo'] : null;
$_REQUEST
是$_GET
和$_POST
的结合。