No importa que tan genial su validación front-end, siempre tienes que validar desde el lado del servidor,
así es
"Isset" comprueba si se ha seteado un dato o valor, peor no valida si esta vacío o no.
"Empty" (vacío en ingles) en cambio valida si un valor esta vacío o no.
Para solucionar el error que tuvo el profe a imprimir...
Es solo quitar el signo pesos $ antes del {
echo "¡Hola {$_POST['nombre']}";
Gracias Jonatan!
Lo de validar si el formulario había sido enviado gracias al atributo name en el botón... no se me había ocurrido.
Excelente 🔥!
Comparto mi apunte de la clase
Index
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>iJCode - Validación de Formularios</title></head><body><!-- Creación del formulario --><formaction="./server.php"method="POST"><labelfor="name"> Ingresa tu nombre:
<inputtype="text"name="name"id="name"></label><!-- Un botón también puede llevar su atributo 'name' para validar si fue enviado por el método seleccionado --><buttontype="submit"name="form">Enviar formulario</button></form></body></html>
Server
<?php// Comprobando que se recibio por el método POSTecho("<pre>");var_dump($_POST);/*
array(2) {
["name"]=>
string(4) "Joel"
["form"]=>
string(0) ""
}
*/echo("</pre>");// isset(): Determina si una variable está definida y no es null.// Es decir, determina si en la variable global $_POST (en este caso), existe el valor con determinado nombreecho("<pre>");var_dump(isset($_POST['name']));// bool(true)var_dump(isset($_POST['age']));// bool(false)// Comprobando si el formulario fue enviadovar_dump(isset($_POST['form']));// bool(true)echo("</pre>");// empty(): Determina si una variable está vacía, es decir que no exista un valor. Esta función no genera una advertencia si la variable no existeecho("<pre>");var_dump(empty($_POST['name']));// bool(false)var_dump(empty($_POST['age']));// bool(true)echo("</pre>");// Creando una validación básica en el servidor// Si 'name' esta definida en $_POST y no está vacía 'name' y si esta definida la variable 'form' en la variable global $_POSTif(isset($_POST['name'])&&!empty($_POST['name'])&&isset($_POST['form'])){echo("Tu formulario se envío correctamente ✔");}else{echo("Tu formulario no se envío ❌");}// Tu formulario se envío correctamente ✔
Resultado
Siempre es importante validar del lado del servidor, anotado.
😎 A mí me dijeron una vez "haz tu interfaz de usuario como que lo fuera a usar tu familia". Dando a entender que lo tiene que saber usar mi mamá, mi hermana, mi abuelita, y hasta mi gato jaja. Hay que estar preparado para todo.
La función isset(), según el manual PHP, determina si una variable ha sido declarada y su valor no es NULO. Es importante fijarse bien: si una variable tiene valor nulo, aunque haya sido declarada, isset() devolverá false. En todos los ejemplos anteriores para is_null(), isset() devolvería false mientras que is_null() devolvió true, por eso se consideran funciones opuestas. También es importante fijarse que isset() devuelve true
para variables con valores vacíos, por ejemplo, cadenas de texto vacías:
//isset() devuelve false por que $var no ha sido definidavar_dump(isset($var));//isset() devuelve false aunque la variable haya sido declarada pues su valor es NULL$var;var_dump(isset($var));//isset() devuelve true. El valor ya no es nulo aunque esté vacío$var="";var_dump(isset($var));```
index.html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Validando el envío de un formulario</title></head><body><form action="server.php" method="post"><label for="nombre">Nombre</label><input type="text" name="nombre" id="nombre"><button name="form" type="submit">Mandar formulario</button></form></body></html>
server.php
<?php
/* if ( isset($_POST["nombre"]) && !empty($_POST["nombre"])) {
echo "¡Hola " . $_POST['nombre'] . "!";
}
else {
echo "No mandaste nada 😾";
} */if(isset($_POST["form"])){ echo "Todo el formulario fue mandado";}else{ echo "No se mando ningun formulario";}```
Buena esa
Si tienes la version 7 o mayor puedes abraviar la condicion con un operador coalescente nulo
<?php
if(empty($number)){ echo 'La variable number no existe si llegase a existir y estar vacía también va a ser true, por lo tanto se imprimiría este msn.';}$number ='';// cuando sabemos que la variable ya ha sido previamente declarada no es necesario empty o issetif(!$number){ echo 'La variable number está vacía, es 0 o "0", null o false';}// validamos tanto si corresponde con la comparación y el tipo de dato string en este caso.if($number ==='1'){ echo $number;}// tanto si $number es 1 entero o '1' string es true porque no validamos el tipo de dato.if($number ==1){ echo $number;}// Cualquier valor diferente de null, 0, '0', false o ''if($number){ echo $number;}
Alguien me ayudas por favor
al momento de enviar mi formulario sin escribirle nada al input me dice "formulario enviado" en lugar de "no se envió formulario" según la logica de mi programa, estas son las imagenes, no se que tengo mal y cuando lo coloco con mayúscula me sale true???
yo use XOR en vens de && y funciona.
Existen Usuario Maliciosos que Quieren meterte codigo sucio a tu servidor por XSS a paginas web a traves de formularios en el FrontEnd, esos suarios son Malos y quieren atacar paginas todo los dias, pro lo que Siempre es super importante validar la infromacion que los usuarios envian para evitar codigo malgno por parte del usaurio , \nEl FrontEnd validation puede ser facilmente Bypassed pro parte de un Hacker experimentado con las DevTools del Navegador, \nSiempre hay que desconfiar de los usuarios porque existe una pequena fraccion de ellos que quiere hacer dano a nuestra paginasWeb con hacking prefabricado para corromper nuestro FrontEnd por JS \nPor tanto y lo que dice @RetaxMaster si qaue es muy cierto -"Siempre/Siempre Validar en el Lado del Servidor para evitar XSS" tambien se deben usar consultas SQl parametrizadas para evitar un SQL Injecction. \n
Definición:isset() es una función en PHP que verifica si una variable está definida y no esnull. En otras palabras, devuelve true si la variable existe y no es null, y false si la variable no está definida o tiene un valor null.
2. ¿Cómo se utilizaisset()?
Se usa comúnmente para:
Verificar si un valor ha sido enviado desde un formulario antes de trabajar con él.
Asegurarse de que una variable esté definida antes de usarla, evitando errores.
Validar datos en scripts para garantizar que las variables contienen información antes de procesarla.
Ejemplo: Verificación de un formulario
<form method="POST" action="procesar.php"><label for="nombre">Nombre:</label><input type="text" id="nombre" name="nombre"><br><input type="submit" value="Enviar"></form>```**Explicación del ejemplo:**```js
<?php
if(isset($_POST['nombre'])){ $nombre = $_POST['nombre']; echo "El nombre recibido es: ".$nombre;}else{ echo "El nombre no ha sido enviado.";}?>
Cuando el usuario envía el formulario, $_POST['nombre'] contiene el valor del campo "nombre".
isset($_POST['nombre']) verifica si el campo "nombre" fue enviado y no esnull.
Si la verificación es true, el script imprime el nombre. Si no se ha enviado el campo, se muestra el mensaje "El nombre no ha sido enviado.".
Para que no se vuelva a enviar un form y no nos salga esa ventanita de warning debemos hacer uso del POST/ redirect/ GET pattern. Pueden googlearlo :)
,problem%20encountered%20in%20user%20ag
Igual un video con Charles Severance explicandolo :D
Explicado en simples palabras: Una vez que mandaos el formulario, se hace una petición al servidor de cargar la misma pagina (si la contraseña es incorrecta) o la pagina a la que deberiamos acceder , pero haciendo una peticion GET y que en casos como un formulario de trransaccion bancaria evitaria enviar doblevez el dinero al refrescar la pagina.
Y hay alguna manera de evitar que se reenvíe un formulario? Cuando se recarga una página se da la advertencia en el navegador, pero como lo harían desde PHP? ?
Busca POST/Redirect/GET Pattern asi se evita :D
tuve un resultado diferente al profesor cuando puso el dump con el isset() despues de haber eliminado el name, en mi caso siempre imprimia true. entonces la forma en la que lo solucioné fue intercambiando isset por empty
mirando el comportamiento booleano.
<?php
echo "<pre>";var_dump($_POST);echo "</pre>";var_dump(isset($_POST["nombre"]));if(isset($_POST["nombre"])&&!empty($_POST["nombre"])){ echo "¡Hola ".$_POST['nombre']."!";}else{ echo "No mandaste nada 😾";}if(isset($_POST["form"])){ echo "Todo el formulario fue mandado";}else{ echo "No se mando ningun formulario";}
Validar si un formulario se ha enviado
Puedes usar las funciones isset() y empty() en conjunto para validar si un formulario se ha enviado y si los campos están completos en PHP. isset() verifica si una variable está definida y empty() verifica si una variable está vacía. Aquí tienes un ejemplo de cómo hacerlo:
Empty
En PHP, la función empty() se utiliza para verificar si una variable está vacía. Una variable se considera vacía si se cumple una o más de las siguientes condiciones:
La variable no está definida.
La variable tiene un valor que se evalúa como falso, como null, false, 0, una cadena vacía "" o un arreglo vacío.
La sintaxis básica de la función empty() es la siguiente:
boolempty(mixed$variable)
Donde $variable es la variable que deseas verificar.
Aquí tienes algunos ejemplos de cómo se utiliza empty():
$nombre="Juan";$edad=0;$correo="";$telefono=null;$arreglo=array();if(empty($nombre)){echo"El nombre está vacío.";}else{echo"El nombre no está vacío.";}if(empty($edad)){echo"La edad está vacía.";}else{echo"La edad no está vacía.";}if(empty($correo)){echo"El correo está vacío.";}else{echo"El correo no está vacío.";}if(empty($telefono)){echo"El teléfono está vacío.";}else{echo"El teléfono no está vacío.";}if(empty($arreglo)){echo"El arreglo está vacío.";}else{echo"El arreglo no está vacío.";}
En estos ejemplos, la función empty() se utiliza para verificar si las variables tienen valores que se consideran como "vacíos". Como resultado, obtendrás diferentes mensajes dependiendo de si las variables cumplen las condiciones de estar vacías o no.
Recuerda que empty() solo verifica si una variable está vacía según las condiciones mencionadas. Si deseas verificar si una variable existe o está definida, debes usar isset().
Isset
En PHP, la función isset() se utiliza para verificar si una variable está definida y tiene un valor asignado. La función devuelve true si la variable está definida y tiene un valor, y false si la variable no está definida o su valor es null.
La sintaxis básica de la función isset() es la siguiente:
boolisset(mixed$variable[,mixed $...])
Donde $variable es la variable que deseas verificar y $... indica que puedes proporcionar más variables para verificar en la misma llamada a la función.
Aquí tienes algunos ejemplos de cómo se utiliza isset():
$nombre="Juan";$edad=null;$correo="";if(isset($nombre)){echo"La variable \\$nombre está definida.";}else{echo"La variable \\$nombre no está definida.";}if(isset($edad)){echo"La variable \\$edad está definida.";}else{echo"La variable \\$edad no está definida.";}if(isset($correo)){echo"La variable \\$correo está definida.";}else{echo"La variable \\$correo no está definida.";}
En estos ejemplos, la función isset() se utiliza para verificar si las variables están definidas. Las variables que tienen valores asignados, incluso si son null o cadenas vacías, se consideran definidas. Las variables que no han sido declaradas o definidas devolverán false en la función isset().
La función isset() es especialmente útil para evitar errores al intentar acceder a variables que podrían no existir. Antes de utilizar una variable, puedes usar isset() para verificar si está definida y, si es así, proceder a trabajar con su valor.
Recuerda que, dependiendo de tus necesidades, también puedes aplicar otras validaciones adicionales a los datos recibidos para garantizar que sean válidos y seguros antes de procesarlos.
Código desarrollado para la clase
Formulario en HTML
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Validando el envío de un formulario</title></head><body><!-- Formulario --><formaction="server.php"method="post"enctype="multipart/form-data"><!-- Input simple --><label><h4>Datos usuario</h4></label><labelfor="nombre">Nombre:</label><inputtype="text"name="nombre"id="nombre"placeholder="Nombre"><br><labelfor="apellido">Apellido:</label><inputtype="text"name="apellido"id="apellido"placeholder="Apellido"><br><labelfor="edad">Edad:</label><inputtype="number"name="edad"id="edad"placeholder="Edad"><br><!-- Reset --><inputtype="reset"value="Limpiar"><!-- Envio --><buttonname="enviar"type="submit">Enviar</button></form></body></html>
Servidor PHP
<?php// // Truco para debugear y ver lo que llega por POST// echo "<pre>";// var_dump($_POST); // Recupera la información que se envía por POST// var_dump($_FILES); // Recupera la información que se envía por FILES// echo "</pre>";if(isset($_POST["nombre"],$_POST["apellido"],$_POST["edad"])&&!empty($_POST["nombre"])&&!empty($_POST["apellido"])&&!empty($_POST["edad"])){echo"Hola: ".$_POST["nombre"]." ".$_POST["apellido"].", tu edad es ".$_POST["edad"]."<br>";}else{echo"No se ha enviado la totalidad de los datos <br>";}if(isset($_POST["enviar"])){echo"Se ha enviado el formulario";}else{echo"No se ha enviado ningun formulario";}?>