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,

鈥淚sset鈥 comprueba si se ha seteado un dato o valor, peor no valida si esta vac铆o o no.

鈥淓mpty鈥 (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 鈥溌ola {$_POST[鈥榥ombre鈥橾}鈥;

馃槑 A m铆 me dijeron una vez 鈥渉az 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.