Inicio › Foros › Lenguajes de programación, desarrollo, código fuente › PHP, CMS › Error Do not Access Superglobal $_POST Array Directly en NetBeans con PHP
Etiquetado: desarrollo, do not access, error, get, netbeans, php, post, superglobal, warning
- Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 7 años, 6 meses por Varios.
-
AutorEntradas
-
09/01/2017 a las 08:52 #1372VariosModerador
Hola, estoy usando NetBeans como IDE de desarrollo para una web en PHP, me va bien, pero en esta línea de código:
PHP12345678910//Insertar nuevo registroif ($_POST){$campos = array (array("nombre" => "nombre", "tipo" => "texto", "valor" => $_POST["nombre"]),array("nombre" => "fechaalta", "tipo" => "fecha", "valor" => $_POST["fechaalta"]),array("nombre" => "precioventa", "tipo" => "numero", "valor" => $_POST["precioventa"]),array("nombre" => "preciocoste", "tipo" => "numero", "valor" => $_POST["preciocoste"]),array("nombre" => "codigotipo", "tipo" => "numero", "valor" => $_POST["codigotipo"]),array("nombre" => "stock", "tipo" => "numero", "valor" => $_POST["stock"]),array("nombre" => "observacion", "tipo" => "texto", "valor" => $_POST["observacion"]));Concretamente en «if ($_POST)» y donde uso «$_POST[» me muestra la siguiente advertencia:
Do not Access Superglobal $_POST Array Directly
Use some filtering functions instead (e.g. filter_input(), conditions with is_*() functions, etc.)Me deja compilar pero me gustaría poder resolverla ¿cómo lo hago?
09/01/2017 a las 09:03 #1373alonsojpdSuperadministradorEste warning es debido a que en las nuevas versiones de PHP no se recomienda el uso directo de las variables superglobales como las usadas en los formularios y métodos POST y GET. En su lugar se recomienda filtrar la información recibida, esto es por seguridad.
Para solucionar el warning puedes usar, por ejemplo, la función filter_input_array para el $_POST y filter_input para el $_POST[«…»].
De forma que tu código podría quedar de la siguiente manera:
PHP12345678910//Insertar nuevo registroif (filter_input_array(INPUT_POST)){$campos = array (array("nombre" => "nombre", "tipo" => "texto", "valor" => filter_input(INPUT_POST, "nombre")),array("nombre" => "fechaalta", "tipo" => "fecha", "valor" => filter_input(INPUT_POST, "fechaalta")),array("nombre" => "precioventa", "tipo" => "numero", "valor" => filter_input(INPUT_POST, "precioventa")),array("nombre" => "preciocoste", "tipo" => "numero", "valor" => filter_input(INPUT_POST, "preciocoste")),array("nombre" => "codigotipo", "tipo" => "numero", "valor" => filter_input(INPUT_POST, "codigotipo")),array("nombre" => "stock", "tipo" => "numero", "valor" => filter_input(INPUT_POST, "stock")),array("nombre" => "observacion", "tipo" => "texto", "valor" => filter_input(INPUT_POST, "observacion")));09/01/2017 a las 09:05 #1374VariosModeradorEstupendo, muchas gracias, así he resuelto los métodos POST, para los GET tengo el mismo problema ¿cómo los resuelvo?
09/01/2017 a las 09:07 #1375alonsojpdSuperadministradorPara los GET puedes usar el mismo método, cambiando:
filter_input_array(INPUT_POST) por filter_input_array(INPUT_GET)
y
filter_input(INPUT_POST, «…») por filter_input(INPUT_GET, «…»)
09/01/2017 a las 09:09 #1376VariosModeradorGenial, resuelto con tus indicaciones, ahora ya me desaparecieron los warning en NetBeans.
Muchas gracias!!
-
AutorEntradas
- Debes estar registrado para responder a este debate.