Avertizare "nu Acces Superglobale $_POST Matrice Direct" pe Netbeans 7.4 pentru PHP

Am'am primit acest mesaj de avertizare de pe Netbeans 7.4 pentru PHP în timp ce eu'm folosind $_POST, $_GET, $_SERVER, ....

nu Acces Superglobale $_POST Matrice Direct

Ce înseamnă? Ce pot face pentru a corecta acest avertisment?

Edit: Evenimentul mostre de cod încă arată această avertizare.

Comentarii la întrebare (5)
Soluția

filter_input(INPUT_POST, 'var_name') în loc de $_POST['var_name']
filter_input_array(INPUT_POST) în loc de $_POST

Comentarii (12)

Deși un pic mai târziu, am'am venit peste această întrebare în timp ce căutarea de soluții pentru aceeași problemă, așa că sper să vă fie de vreun ajutor...

M-am trezit în același întuneric decât tine. Doar găsit acest articol, ceea ce explică unele indicii noi introduse în NetBeans 7.4, inclusiv:

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

Motivul pentru care acesta a fost adăugat este că superglobals de obicei sunt umplute cu date introduse de utilizator, care ar trebui't fi vreodată încredere orbește. În schimb, un fel de filtrare ar trebui să fie făcut, și că's ce indiciu sugerează. Filtru superglobale valoare în cazul în care acesta are unele otrăvit de conținut.

De exemplu, în cazul în care am avut:

$_SERVER['SERVER_NAME']

Am'am pus în loc de:

filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING)

Ai filter_input și filtre doc aici:

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

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

Comentarii (1)

Sunt de acord cu alte respondenti că, în majoritatea cazurilor (aproape mereu) este necesar pentru a steriliza Dvs. de intrare.

Dar ia în considerare astfel de cod (este pentru o ODIHNĂ controller):

$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();
}

Nu ar fi foarte util să se aplice igienizare aici (deși nu s-ar rupe ceva, fie).

Deci, urmați recomandările, dar nu orbește - mai degrabă să înțeleagă de ce acestea sunt pentru :)

Comentarii (0)

Doar folosi

filter_input(INPUT_METHOD_NAME, 'var_name'), în loc de $_INPUT_METHOD_NAME['var_name'] filter_input_array(INPUT_METHOD_NAME) în loc de $_INPUT_METHOD_NAME

e.g

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

în loc de

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

Și de a folosi

    var_dump(filter_input_array(INPUT_SERVER));

în loc de

    var_dump($_SERVER);

N. B: se Aplică la toate celelalte Super variabilă Globală

Comentarii (0)