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.
filter_input(INPUT_POST, 'var_name')
în loc de $_POST['var_name']
filter_input_array(INPUT_POST)
în loc de $_POST
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:
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 :)
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ă