119

$_POST$_GET$_SERVERなどを使用しているときに、Netbeans 7.4 for PHP でこの警告メッセージが表示されました。

スーパーグローバル $_POST 配列に直接アクセスしない

どういう意味ですか?この警告を修正するにはどうすればよいですか?

編集:イベントのサンプル コードでは、この警告がまだ表示されます。

4

5 に答える 5

98

filter_input(INPUT_POST, 'var_name')の代わり$_POST['var_name']
filter_input_array(INPUT_POST)$_POST

于 2013-11-09T10:15:50.180 に答える
6

ほとんどの場合(ほとんどの場合)、あなたの入力をサニタイズする必要があるという他の回答者に同意します。

ただし、次のようなコードを検討してください (REST コントローラー用です)。

$method = $_SERVER['REQUEST_METHOD'];

switch ($method) {
            case 'GET':
                return $this->doGet($request, $object);
            case 'POST':
                return $this->doPost($request, $object);
            case 'PUT':
                return $this->doPut($request, $object);
            case 'DELETE':
                return $this->doDelete($request, $object);
            default:
                return $this->onBadRequest();
}

ここでサニタイズを適用してもあまり役に立ちません (ただし、何も壊すことはありません)。

したがって、推奨事項に従いますが、やみくもにではなく、なぜそれらが目的であるかを理解してください:)

于 2015-05-06T11:04:17.817 に答える