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
!emptylugar deisset. isset devuelve verdadero$_POSTporque$_POSTarray es superglobal y siempre existe (set).O mejor uso
$_SERVER['REQUEST_METHOD'] == 'POST'fuente
issety!emptypara 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.$_POSTpuede 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 trueDesde 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