Cargando



PHP como utilizar la extensión Filter o filtro de datos

Esta extensión filtros de datos o Filter sirve para validar y verificar datos o estructuras que sean inseguras. Esto es especialmente útil cuando el origen de datos contiene datos desconocidos o provienen de fuentes como archivos externos o el ingreso de datos escrito por el usuario, por ejemplo, información que puede provenir de un formulario HTML.


jul 09 2015 11:05
Avanzado
Hay dos tipos principales de filtrado: validación y sanitización.

El filtro de validación se utiliza para comprobar si los datos cumplen con ciertos requisitos. Por ejemplo, si asignamos el filtro FILTER_VALIDATE_EMAIL se determinará si el dato a validar es dirección de correo electrónico válida, pero no va a cambiar los datos en sí. El filtro ya sabe como validar el dato.

La función a utilizar sera filter_var(dato_a_validar, filtro)

Ejemplo validando un Email:
<?php

//email de ejemplo
$email = "demo@servidor.com";


if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {

  echo("$email es válido");
} else {

  echo("$email no es valido");
}

?>

Validad un numero

<?php
$enlace=”http://demophp.com”;


if (!filter_var($enlace, FILTER_VALIDATE_URL) === false) {

    echo("Es una url valida");
} else {

    echo("La url no es valida");
}

?>

Existen muchos filtro como ser

FILTER_VALIDATE_BOOLEAN  258  Validacion Booleana o Verdadero/Falso
FILTER_VALIDATE_FLOAT  259  Validacion numeros con decinales

FILTER_VALIDATE_INT  257  Validacion numeros enteros
FILTER_VALIDATE_IP  275  Validacion de IP
La Sanitización es el proceso por el cual se desinfecta o limpia los datos provenientes de fuentes inseguras, por lo que es posible revisar y eliminar caracteres no deseados. Por ejemplo, pasando FILTER_SANITIZE_EMAIL eliminará caracteres que no son apropiados para una dirección de correo electrónico que contenga, pero es importante saber que la sanitización no valida los datos.

Ejemplo:
<?php
//Ingresamos un email con caraceres no permititdos

$emailingresado = "demo?.php]!@servi?dor.com";

//Limpiamos el email
$emailseguro = filter_var($email, FILTER_SANITIZE_EMAIL);


//validamos el email

if (!filter_var($emailseguro, FILTER_VALIDATE_EMAIL) === false) {
  echo("$emailseguro es válido");

} else {
  echo("$emailsegurio no es valido");

}

echo $emailingresado.”    “.$emailseguro;
?>
Filtro para invocar funciones definidas por el usuario

El filtro FILTER_CALLBACK llama a una función definida por el usuario para aplicar a un tipo de dato o bien a una estructura a la que se le aplica el filtro.
<?php
function aplicardescuento($string)

  {
  return str_replace("10%", "25%", $string);

  }

$datos[0] = "Silla 10% de descuento!";
$datos[1] = "Mesa 10% de descuento!";

$datos[2] = "Vajilla 10% de descuento";
$datos[3] = "Manteleria 10% de descuento";


echo "Antes<br>";

for($i = 0; $i < count($datos); $i++) {
echo $datos[$i].'<br>';

}

echo '<br>';
echo "Despues<br>";

for($i = 0; $i < count($datos); $i++) {
echo filter_var($datos[$i], FILTER_CALLBACK,

array("options"=>"aplicardescuento")).'<br>';
}

?>

extension-filter.jpg



Como enviar parámetros a un filtro CALLBACK para procesar un dato desde la función o realizar una tarea determinada.

Veamos un ejemplo donde envío como parámetro un producto ya sea el nombre o el código y la cantidad y el precio unitario, luego invocare un filtro para calcular el importe final, esto puede servir para validar si el código del producto es correcto o bien filtrar el producto primero y luego buscar el precio y calcular o aplicar algún descuento o recargo.
<? echo "Filtro con parámetros <br><br>";


function calcular($dato, $valorA, $valorB)

{

    $calculo=$valorA+$valorB;
    return $dato.' ............  &euro;'.$calculo;

}

//Dato ingresado por el usuario
$dato = 'ProductoA';

$importe = filter_var($dato, FILTER_CALLBACK, array('options' => function($var) {
    return calcular($var, 20, 10);

}));

echo "Detalle de compra:<br>".$importe; ?>

extension-filter2.jpg



¿Cuando debería utilizar los filtros de validación o sanitización en una aplicación?

La mayoría de las web e intranets reciben datos de distintas fuentes algunas de bases de datos o de fuentes externas o bien por ingreso de datos de usuarios a través de un formulario, por ello utilizar los filtros garantiza que los datos sean fiables.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X