Tengo un formulario en una página que se envía a otra página. Allí, comprueba si el correo de entrada está lleno. Si es así, haga algo y si no está lleno, haga otra cosa. No entiendo por qué siempre dice que está configurado, incluso si envío un formulario vacío. ¿Qué falta o está mal?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
Respuestas:
La mayoría de las entradas de formulario siempre están configuradas, incluso si no se completan, por lo que también debe verificar el vacío.
Como
!empty()
ya verifica ambos, puede usar esto:fuente
!
operador en casos como este (más fácil de leer, menos posibilidades de error, etc.) e invertir la lógica ...if (empty()) {/* No */} else {/* Yes */}
Utilizar en
!empty
lugar deisset
. isset devuelve verdadero$_POST
porque$_POST
array es superglobal y siempre existe (set).O mejor uso
$_SERVER['REQUEST_METHOD'] == 'POST'
fuente
isset
y!empty
para evitar errores. EDITAR: Vaya, aparentemente lo hace Aprender todos los días y luego Ref$_SERVER['REQUEST_METHOD']
asegura que el usuario haya enviado el formulario.$_POST
puede estar vacío incluso en este caso. Considere este formulario:,<form method="post"></form>
enviarlo no enviará nada a la acción, pero el tipo de solicitud serápost
. O se puede hacer con curl:curl -X POST http://example.com/processor.php
. Si el procesador contiene un código similarecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, veráPOST true
Desde php.net , isset
el espacio vacío se considera establecido. Necesita usar empty () para verificar todas las opciones nulas.
fuente
Si envía el formulario vacío, se seguirá enviando $ _POST ['mail'], pero el valor está vacío. Para verificar si el campo está vacío, debe verificar
fuente
Agregue el atributo siguiente al formulario de entrada de texto:
required="required"
. Si el formulario no está lleno, no permitirá que el usuario envíe el formulario.Tu nuevo código será:
fuente
Simplemente puede usar:
Alternativamente, use vacío ()
fuente
@
, es decir:@$_POST['username']
. Gracias por darte cuenta de eso.Utilizar en
!empty()
lugar deisset()
. Porqueisset()
siempre volverá verdadero en tu caso.fuente
Tal vez puedas probar este:
fuente
fuente
Vamos a pensar que este es su formulario HTML en step2.php
Creo que lo necesita para su base de datos, por lo que puede asignar su valor de formulario HTML a la variable php, ahora puede usar Real Escape String y debajo debe estar su
Donde $ db es su conexión de base de datos.
fuente
Verifique primero si se envió el FORMULARIO y luego el campo. También debe desinfectar el campo para evitar los piratas informáticos.
step2_check:
fuente
Para responder a la pregunta publicada: isset y empty juntos da tres condiciones. Esto también puede ser utilizado por Javascript con un comando ajax.
fuente
Puedes probar esto:
fuente
fuente
Puedes probar,
fuente