¿Cuál es la mejor manera de verificar si un formulario ha sido enviado o no para determinar si debo pasar las variables del formulario a mi clase de validación?
Primero pensé que tal vez:
isset($_POST)
Pero eso siempre será cierto ya que un superglobal se define en todas partes. No quiero tener que recorrer cada elemento de mi formulario con:
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
Mientras escribía esta pregunta, pensé en una solución mucho más básica, agregue un campo oculto para que actúe como una marca que pueda verificar.
¿Hay una forma 'más limpia' de hacerlo que agregar mi propia bandera?
php
forms
validation
Anónimo
fuente
fuente
submited
y luego usar el phpif(isset($_POST['submited']))
o una entrada oculta ...Respuestas:
Para verificación general si hubo una
POST
acción, use:EDITAR : como se indica en los comentarios, este método no funcionará en algunos casos (por ejemplo, con casillas de verificación y botón sin nombre). Realmente deberías usar:
fuente
Qué tal si
fuente
En realidad, el botón Enviar ya realiza esta función.
Prueba en el FORMULARIO:
Luego en el controlador PHP:
fuente
if (null !== (filter_input(INPUT_POST, 'macaddress'))){
que le acostumbra a usar filter_inputUtilizar
fuente
if ($_SERVER['REQUEST_METHOD'] == 'POST')
.fuente
Prueba esto
fuente
En una nota diferente, también es siempre una buena práctica agregar un token a su formulario y verificarlo para verificar si los datos no se enviaron desde el exterior. Aquí están los pasos:
Genere un token único (puede usar hash) Ej:
Asigne este token a una variable de sesión. Ex:
Agregue una entrada oculta para enviar el token. Ex:
luego, como parte de su validación, verifique si el token enviado coincide con la var. de sesión
fuente
Tuve el mismo problema: también asegúrate de agregar
name=""
el botón de entrada. Bueno, esa solución funcionó para mí.fuente
También puedes usar:
fuente
is_array($_POST)
Siempre da verdad (en mi máquina). De acuerdo con stackoverflow.com/questions/5594020/php-check-if-post-is-array :$_POST is a superglobal array which is always defined
,unless somewhere in your code you either unset or overwrite $_POST somehow
, por lo que parece que se espera que esto siempre devuelve verdadero ..is_array($_POST)
definitivamente no es la forma de verificar si se envió el formulario.