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

时间:2014-01-02 12:28:16

标签: php variables unset

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

$foo = $_POST['foo']. $_GET['foo'];

获取一个值是否通过POST或GET传递,这是可接受还是不好的做法?

6 个答案:

答案 0 :(得分:2)

虽然您可以使用$_REQUEST['foo'],但您的答案中没有任何内容可以使用,因为$_POST以及$_GET,但您的代码将会再次考虑肮脏,比如说我调整了method值,对于登录表单,用户可以轻松攻击你的网站......

明智的是,使用$_GET[]$_POST[]而不是使用宽松的$_REQUEST[]

如果有任何方法,您使用的是$_REQUEST,请确保您使用条件来检查请求是GET还是POST使用$_SERVER['REQUEST_METHOD']

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
   //Do something
}

答案 1 :(得分:1)

我会选择:

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

更多信息:http://php.net/manual/pt_BR/reserved.variables.request.php

答案 2 :(得分:0)

获取POS或GET passeb是否使用此值

$foo = $_REQUEST['foo'];

答案 3 :(得分:0)

如果您将开发服务器PHP配置为抛出所有警告,您将找到。

答案 4 :(得分:0)

你为什么用。运算符,如果我没有错,这会连接结果,因为上面建议使用$ _REQUEST将是更好的方法。

答案 5 :(得分:0)

是的,太可怕了。有两个问题:

  1. 会发出警告
  2. 连接不适合此用例
  3. 如果您想从$_POST$_GET获取密钥,并且您不关心密钥是哪一个,您可以使用带有以下成语的$ _REQUEST超全局:

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

    $_REQUEST$_GET$_POST的结合。