PHP:使用未设置的变量是不是不好的做法



例如,如果我想使用代码:

$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 将是更好的方法。

是的,这很糟糕。有两个问题:

  1. 它会发出警告
  2. 串联不适合此用例

如果你想从 $_POST$_GET 获取密钥,并且你不在乎密钥存在于哪一个中,你可以使用 $_REQUEST 超全局和以下习惯用法:

$var = isset($_REQUEST['foo']) ? $_REQUEST['foo'] : null;

$_REQUEST$_GET$_POST的结合。

最新更新