Validar boolean en php con FILTER_VALIDATE_BOOLEAN

Para validar una variable de tipo boolean utilizaremos el filtro FILTER_VALIDATE_BOOLEAN. Este filtro lo utilizaremos junto con la función filter_var, y nos devolverá:

  • TRUE: si la variable toma valor 1, on, true o yes.
  • FALSE: en caso contrario.

Veamos un ejemplo:

$var=$_POST['var'];
$resultado=filter_var($var,FILTER_VALIDATE_BOOLEAN);

Se puede usar junto con la opción FILTER_NULL_ON_FAILURE. En este caso, la función devolverá:

  • TRUE: si la variable toma valor 1, on, true o yes.
  • FALSE: si la variable toma valor 0, off, false, no.
  • NULL: en caso contrario.

Aquí tenemos otro ejemplo utilizando la opción FILTER_NULL_ON_FAILURE:

$var=$_POST['var'];
$resultado=filter_var($var,FILTER_VALIDATE_BOOLEAN,FILTER_NULL_ON_FAILURE);

Para ver un ejemplo en funcionamiento: Ver ejemplo del filtro FILTER_VALIDATE_BOOLEAN

Filtrar entradas de un formulario en PHP

Es normal realizar formularios en los que algunos campos tienen que tener un determinado formato (por ejemplo, un correo electrónico siempre será x@xxx.x, o una edad siempre será un valor entre 1 y 110, salvo el que salió en la tele que tenia 120 años…). Una forma de realizar estas comprobaciones, o incluso, de corregir los posibles errores en los datos obtenidos de manera rápida y sencilla consiste en utilizar las funciones para filtros de php.

vale, en que consisten estos filtros?

Los filtros que vamos a utilizar se resumen en dos:

  1. Filtros de validación.
  2. Filtros de saneamiento.

Los filtros de validación sirven, como habrás podido imaginar, para comprobar.  Un ejemplo claro: Si tenemos un campo en el que el usuario inserta su DNI, tenemos que COMPROBAR que el valor introducido en el campo cumpla con el formato del DNI  (8 números seguidos de una letra->15423672D).

Los filtros de saneamiento, sirven para corregir, por ejemplo, voy a CORREGIR que un usuario escriba en el campo nombre solo letras. Si escribe números, estos serán borrados: Rubita19->Rubita.

ok, lo entiendo, pero, ¿como se utilizan?

Para recibir los datos de un formulario, utilizamos $_GET['nombre_del_campo'] o $_POST['nombre_del_campo'] dependiendo de como se envien los datos del formulario(método GET o POST…).

Una vez que hayamos recibido los datos, tenemos que filtrarlos. Para ello utilizaremos la función filter_var. La funcion filter_var recibe tres parámetros:

  • El primer parámetro se refiere a la variable que vamos a filtrar.
  • El segundo parámetro se refiere al filtro a aplicar, y es opcional. En caso de no indicarlo, se aplicará el filtro por defecto.
  • El tercer parámetro se refiere a las opciones del filtro. Solo se indicará para ciertos filtros.

El siguiente ejemplo, muestra como se válida un correo electrónico. Si el correo que tenemos en la variable $correo no fuese correcto, se mostraría por pantalla el mensaje de error:

<?php
$correo=$_GET['correo_electronico'];//$_POST si los datos se envian por POST
if(!filter_var($correo,FILTER_VALIDATE_EMAIL))
   echo "El correo introducido no es válido";
?>

¿Y qué tipos de filtros existen?

Pues como ya se ha comentado anteriormente, existen filtros para validar y filtros para corregir:

Filtros para validar

Filtros para sanear (corregir)

  • FILTER_SANITIZE_EMAIL
  • FILTER_SANITIZE_ENCODED
  • FILTER_SANITIZE_MAGIC_QUOTES
  • FILTER_SANITIZE_NUMBER_FLOAT
  • FILTER_SANITIZE_NUMBER_INT
  • FILTER_SANITIZE_SPECIAL_CHARS
  • FILTER_SANITIZE_STRING
  • FILTER_SANITIZE_STRIPPED
  • FILTER_SANITIZE_URL
  • FILTER_UNSAFE_RAW

Los nombres de los filtros son bastante intuitivos, de todas formas, iré actualizando este artículo con enlaces de ejemplos de cada uno de los filtros.

Validar email en php

Con la función que os voy a enseñar varias líneas más abajo aprenderemos a validar el correo electrónico que el usuario introduce en un formulario. Cuando hablo de validar me refiero a comprobar que se ha introducido el correo electrónico con el formato correcto, (no confundir con comprobar que el correo existe…).

Para ello utilizaremos el filtro FILTER_VALIDATE_EMAIL y la función filter_input

Codigo

//Se muestra el formulario donde insertaremos el correo
<form action="" method="POST">
  Correo: <input type="text" name="correo" value="" />
  <input type="submit" name="enviar" value="Enviar"/>
</form>

//Si se ha pulsado en enviar, recogemos los datos
<?php
if(isset($_POST['enviar'])){
  if(!$correo=filter_input(INPUT_POST, 'correo', FILTER_VALIDATE_EMAIL))
    echo "Me estas tomando el pelo!";
  else
    echo "El correo es válido";
}
?>

La función filter_input recibe varios parámetros:

  • En el primer parámetro utilizaremos INPUT_POST o INPUT_GET dependiendo de como se envien los datos del formulario.
  • El segundo parámetro se refiere al nombre de la etiqueta “input” de nuestro formulario. En nuestro formulario hemos llamado a la etiqueta “correo”, si tuviesemos varios “inputs” en el formulario, aquí especificaríamos a cual nos referimos.
  • El tercer parámetro se refiere al filtro que vamos a utilizar. En php existen varios filtros, tanto para validar como para sanear. En nuestro caso, como vamos a validar el correo, utilizamos FILTER_VALIDATE_MAIL.

Nota

Para mas informacion sobre los filtros en php: Filtros en php

Ver ejemplo en funcionamiento