No importa que tan genial su validación front-end, siempre tienes que validar desde el lado del servidor,
Introducción
¿Cómo se renderiza una página web en mi computadora?
Levantando un servidor local
¿Cómo combinar HTML con PHP?
PHP como preprocesador de HTML
Imprime texto y etiquetas HTML
Condicionales
Ciclos
¿Cómo pasar variables de PHP a JavaScript?
Evita el código espagueti
Refactorizando código espagueti
Manejo de formularios
Cómo obtener una solicitud al servidor con PHP
Envío de un formulario a través de GET
Envío de un formulario a través de POST
Envío de imágenes
Guardando imágenes en el servidor
Tipos de inputs
Otros tipos de inputs
Valida si un formulario ha sido enviado
Sanitizando datos de mi formulario
Validando datos
Proyecto: formulario de contacto
Creando el maquetado
Haciendo la lógica de recepción del formulario
Integrando PHPMailer
Implementando el servidor de correos de Gmail
Conclusión
Es tu turno de poner todo en práctica
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
RetaxMaster
Aportes 20
Preguntas 2
No importa que tan genial su validación front-end, siempre tienes que validar desde el lado del servidor,
“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’]}”;
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
<!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>iJCode - Validación de Formularios</title>
</head>
<body>
<!-- Creación del formulario -->
<form action="./server.php" method="POST">
<label for="name">
Ingresa tu nombre:
<input type="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 -->
<button type="submit" name="form">Enviar formulario</button>
</form>
</body>
</html>
Server
<?php
// Comprobando que se recibio por el método POST
echo("<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 nombre
echo("<pre>");
var_dump( isset($_POST['name']) ); // bool(true)
var_dump( isset($_POST['age']) ); // bool(false)
// Comprobando si el formulario fue enviado
var_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 existe
echo("<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 $_POST
if( 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 definida
var_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";
}```
Si tienes la version 7 o mayor puedes abraviar la condicion con un operador coalescente nulo
<?php
$name = $_POST['name'] ?? 'John';
fuente: https://www.phptutorial.net/php-tutorial/php-null-coalescing-operator/
<?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 isset
if (!$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;
}
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:
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:
null
, false
, 0
, una cadena vacía ""
o un arreglo vacío.La sintaxis básica de la función empty()
es la siguiente:
bool empty ( 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()
.
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:
bool isset ( 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.
<!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>
<!-- Formulario -->
<form action="server.php" method="post" enctype="multipart/form-data">
<!-- Input simple -->
<label><h3>Datos usuario</h3></label>
<label for="nombre">Nombre:</label>
<input type="text" name="nombre" id="nombre" placeholder="Nombre"><br>
<label for="apellido">Apellido:</label>
<input type="text" name="apellido" id="apellido" placeholder="Apellido"><br>
<label for="edad">Edad:</label>
<input type="number" name="edad" id="edad" placeholder="Edad"><br>
<!-- Reset -->
<input type="reset" value="Limpiar">
<!-- Envio -->
<button name="enviar" type="submit">Enviar</button>
</form>
</body>
</html>
<?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";
}
?>
validacion de recepcion de datos
$nombre = $_POST['nombre'];
if (isset($nombre)) {
echo "Hola ${nombre}!";
}
if(empty($nombre)) {
echo "No enviaste nada!!!";
}
HTML tiene muchas validaciones para formularios, podes mezclarlas con las de PHP
adjunto link
https://developer.mozilla.org/es/docs/Learn/Forms/Form_validation
La función ctype_alpha es útil para validar que un campo del formulario contenga solo letras y puede ser utilizada en conjunción con otras funciones de validación para asegurar que los datos del formulario sean válidos.
<?php
if (isset($_POST['nombre'])) {
// Recibir datos del formulario
$nombre = $_POST['nombre'];
// Validar los datos
if (empty($nombre)) {
// Si el nombre está vacío, mostrar un error
echo 'Por favor ingrese su nombre';
} elseif (!ctype_alpha($nombre)) {
// Si el nombre contiene números, mostrar un error
echo 'Por favor ingrese solo letras en el nombre';
} else {
// Si el nombre no está vacío y no contiene números, mostrar un mensaje de éxito
echo 'Gracias por enviar el formulario. Su nombre es ' . $nombre;
}
}
?>
Para validar si se encuentra un espacio en blanco que también es dato.
$datos = $_POST["nombre"];
if (isset($datos)!= " " ) {
echo "!Hola bienvenido $datos!";
}else
{echo "No enviaste ningun nombre chao";
} ```
Diferencias entre isset
vs empty
Si quieren saber un poco más, este artículo tiene buena información: ver más
Solo mencionar que empty
no genera algo advertencia a diferencia de isset
si lo hace.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?