No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de PHP: Integración con HTML

Curso de PHP: Integración con HTML

Carlos Eduardo Gómez García

Carlos Eduardo Gómez García

Valida si un formulario ha sido enviado

17/24
Recursos

Aportes 14

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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’]}”;

😎 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.

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.

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";
}```

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) );```

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;
}

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.