Validación de campos en un formulario – PHP/HTML – php html formularios

Pregunta:


Tengo este código php para validar un formulario html. El caso es que no se como hacer que para el campo ‘paginas’ que es un <input type="text" name="paginas" value="" maxlength="3"> sólo se admitan números.

Había buscado como hacerlo y encontré is_numeric y lo aplique de esta forma is_numeric(isset($_POST['paginas']))===false pero no me funciona correctamente.

Si alguno de vosotros sabe como funciona el is_numeric o sabe alguna otra forma de hacerlo lo agradecería.
‘Muchas gracias y un saludo!

PHP

if(isset($_POST['submit'])) {

  if (isset($_POST['autor'])==null || isset($_POST['titulo'])==null ||
      isset($_POST['paginas'])==null || is_numeric(isset($_POST['paginas']))===false || isset($_POST['sinopsis'])==null ) {

    echo "ERROR! Todos los campos han de estar rellenados.";
    exit;
  }else {
    echo "<strong>Autor:  </strong>"; echo $_POST['autor']; echo "<br/>";
    echo "<strong>Titulo:  </strong>"; echo $_POST['titulo']; echo "<br/>";
    echo "<strong>Paginas:  </strong>"; echo $_POST['paginas']; echo "<br/><br/>";
    echo "<strong>Sinopsis:  </strong>";echo $_POST['sinopsis'];echo "<br/>";

}
}

Preguntado por:

Bender

Una forma fácil y sencilla de lograr lo que quieres es utilizar las mismas herramientas que nos ofrece HTML, cambiando el input de tipo text a tipo number

<input type="number" name="paginas" value="">

`

Aun que puedes utilizar el type="number" en el input de tu formulario esto no garantiza que solo se puedan enviar números, la recomendación es que igualmente valides siempre los datos de lado servidor.

Pongamos tu código un poco más legible:

if(isset($_POST['submit'])) {

    if ( isset($_POST['autor']) 
         AND isset($_POST['titulo']) 
         AND isset($_POST['paginas'])
         AND is_numeric($_POST['paginas'])
         AND isset($_POST['sinopsis']) 
        ) 
    {
        echo "<strong>Autor:  </strong>".$_POST['autor']."<br/>";
        echo "<strong>Título:  </strong>".$_POST['titulo']."<br/>";
        echo "<strong>Páginas:  </strong>".$_POST['paginas']."<br/><br/>";
        echo "<strong>Sinopsis:  </strong>".$_POST['sinopsis']."<br/>";
    }
    else
    {
        echo "ERROR! Todos los campos han de estar rellenados.";
        exit;
    }
}

No tiene sentido igualar a null, tanto isset() como is_numeric() devuelven true o false nunca van a devolver null, tampoco tiene sentido anidar isset() dentro de is_numeric() ya que esto retornara siempre FALSE ya que isset() devuelve un boleano.

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *