PHP filter_input () y filter_has_var () rareza (error?)

  • Carl
  • Beginner
  • Beginner
  • Avatar de Usuario
  • Registrado: Jul 20, 2004
  • Mensajes: 50
  • Status: Offline

Nota Julio 22nd, 2009, 11:41 pm

Hola a todos,

Si bien jugando con un registro en el sistema para mi sitio web, me encontré con un problema muy extraño con el filter_input () en PHP. La primera vez que envía un formulario, que no reconoce que un determinado valor se fija en $ _POST. En otras palabras, () filter_input devuelve NULL. Naturalmente, esto provoca un error de registro de complementos o de cualquier otra forma de procesamiento de fracasar. Al actualizar el registro en la página, la presentación de los resultados del formulario en el que muestra los valores correctos y filter_input () encontrar la variable en $ _POST.

Al principio pensé que podría haber sido con la función mal (nunca se sabe), pero traté de usar el mismo código filter_var () y funciona como se espera.

Las llamadas a funciones son las siguientes:

Código: [ Select ]
filter_input(INPUT_POST, 'someVar', FILTER_SANITIZE_STRING);


Cuando el formulario se presenta por primera vez, esto da lugar a que devuelva NULL. Sin embargo, si se ejecuta el siguiente

Código: [ Select ]
filter_var($_POST['someVar'], FILTER_SANITIZE_STRING);


que funciona como se espera (en el código real Tengo algunos otros controles en el lugar para asegurarse de que $ _POST [ "somevar"] existe). Ive intentado crear un formulario simple que presenta algunos campos para comprobar que no hay en realidad un problema con mi registro en el sistema y que se comporta exactamente como he descrito anteriormente. Así que el problema parece estar relacionado con el propio PHP y no el código.

Para probar esta más, traté de comprobar manualmente para ver si la variable plaza mencionada se fijó con

Código: [ Select ]
isset($_POST['someVar'])


y

Código: [ Select ]
filter_has_var(INPUT_POST, 'someVar');


El primero funcionó a la perfección y el segundo se comportó exactamente como filter_input (). En otras palabras, éste dijo que la variable no estaba definida, mientras que la primera tiene éxito.

Ahora, tal vez Im que falta una pieza vital de información después de mirar esto por varias horas tratando de arreglar mi código, pero me parece que esto no es como las cosas deberían comportarse. Se podría esperar que los dos para producir los mismos resultados, ¿correcto? ¿O estoy equivocado acerca de eso?

Más importante aún, nadie ha notado este tipo de comportamiento? Im usando PHP 5.2.10 con Apache 2.2.11 en Windows 7 RC1. Sin embargo, Ive también se encuentra el mismo problema en mi servidor Linux remoto LiteSpeed thats corriendo PHP 5.2.9. El explorador no parece hacer una diferencia.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Julio 22nd, 2009, 11:41 pm

  • Carl
  • Beginner
  • Beginner
  • Avatar de Usuario
  • Registrado: Jul 20, 2004
  • Mensajes: 50
  • Status: Offline

Nota Julio 23rd, 2009, 1:04 am

Como una adición rápido, esto no parece afectar a INPUT_GET cuando se utiliza filter_input (), como el código en mi proyecto se basa en que nunca ha dado problemas. Sólo parece afectar a INPUT_POST.

Publicar Información

  • Total de mensajes en este tema: 2 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 107 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC