Warning "Do not Access Superglobal $ POST Array Directly" on Netbeans 7.4 for PHP

Mam ten komunikat ostrzeżenie na Netbeans 7.4 Dla PHP podczas gdy używam $_POST, $_GET, $_SERVER ,....

Nie uzyskuj bezpośredniego dostępu do tablicy Superglobal $_POST

Co to znaczy? Co mogę zrobić, aby skorygować to Ostrzeżenie?

Edit: przykładowy kod zdarzenia nadal pokazuje to Ostrzeżenie.

Author: Tiny, 2013-11-04

4 answers

filter_input(INPUT_POST, 'var_name') zamiast $_POST['var_name']
filter_input_array(INPUT_POST) zamiast $_POST

 86
Author: Homerocker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-09 10:40:24

Chociaż trochę późno, natknąłem się na to pytanie podczas poszukiwania rozwiązania tego samego problemu, więc mam nadzieję, że może to być pomocne...

Znalazłem się w tej samej ciemności, co Ty. Właśnie znalazłem ten artykuł, który wyjaśnia kilka nowych wskazówek wprowadzonych w NetBeans 7.4, w tym ten: {]}

Https://blogs.oracle.com/netbeansphp/entry/improve_your_code_with_new

Powodem, dla którego został dodany, jest to, że superglobale zwykle są wypełnione danymi użytkownika, której nigdy nie powinno się ślepo ufać. Zamiast tego należy wykonać jakieś filtrowanie i to sugeruje podpowiedź. Filtruj wartość superglobalną w przypadku, gdy ma ona zatrutą zawartość.

Na przykład, gdzie miałem:

$_SERVER['SERVER_NAME']

Wstawiłem zamiast:

filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)

Masz filter_input i filters doc tutaj:

Http://www.php.net/manual/en/function.filter-input.php

Http://www.php.net/manual/en/filter.filters.php

 77
Author: Ricardo Palomares Martínez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-23 17:09:42

Zgadzam się z innymi odpowiedziami, że w większości przypadków (prawie zawsze) konieczne jest odkażenie swojego wkładu.

Ale rozważ taki kod (jest dla kontrolera 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();
}

Nie byłoby zbyt użyteczne stosowanie tutaj dezynfekcji (chociaż też niczego nie złamie).

Więc stosuj się do zaleceń, ale nie ślepo - raczej zrozum po co są:)

 5
Author: Rauni Lillemets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 11:04:17

Po prostu użyj

Filter_input (INPUT_METHOD_NAME, 'var_name') zamiast $_input_method_name['var_name'] filter_input_array (INPUT_METHOD_NAME) zamiast $_input_method_name

E. g

    $host= filter_input(INPUT_SERVER, 'HTTP_HOST');
    echo $host;

Zamiast

    $host= $_SERVER['HTTP_HOST'];
    echo $host;

I używać

    var_dump(filter_input_array(INPUT_SERVER));

Zamiast

    var_dump($_SERVER);

Uwaga: stosuje się do wszystkich innych Super globalnych zmiennych

 1
Author: Sani Kamal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-01 15:42:09