35-filtros en php

Validación de datos = Determinar si los datos están en la forma adecuada.

Desinfección de datos = Eliminar cualquier carácter ilegal de los datos.

La extensión de filtro

Los filtros se utilizan para validar y desinfactar entradas externas

La extensión de filtro PHP tiene muchas de las funciones necesarias para verificar la entrada del usuario, y está diseñado para hacer que la validación de datos sea más fácil y rápida.

La function filter_list() se utiliza para enumerar lo que oferece la extension del filtro

...

ejemplo de codigo

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 5px;
}
</style>
</head>
<body>

<table>
  <tr>
    <td>Filter Name</td>
    <td>Filter ID</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
    echo '<tr><td>' . $filter . '</td><td>' 
    . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>

</body>
</html>

Salida

Filtro Name Filtro ID
int 257
Boolean 258
float 259
validate_regexp 272
validate_domain 277
validate_url 273
validate_email 274
validate_ip 275
validate_mac 276
string 513
stripped 513
encoded 514
special_chars 515
full_special_chars 522
unsafe_raw 516
email 517
url 518
number_int 519
number_float 520
magic_quotes 521
callback 1024



¿Por qué usar filtros?

Muchas aplicaciones web reciben información externa. La entrada/los datos externos pueden ser:

  • Entrada del usuario desde un formulario
  • cookies
  • datos de servicios web
  • Variables del servidor
  • Resultados de la consulta de la base de datos

¡Siempre debe validar los datos externos!

¡Los datos enviados no válidos pueden generar problemas de seguridad y romper su página web!

¡Al usar filtros PHP puede estar seguro de que su aplicación obtiene la entrada correcta!




Función PHP filter_var()

La function filter_var() valida y desinfecta los datos

La function filter_var() filtra una sola variable con un filtro especificado

Se necessitan dos datos:

  • La variable que desea comprobar
  • El tipo de cheque a utilizar



Desinfectar una String

El seguiente ejemplo utiliza la function filter_var() para eliminar tods las etiquetas HTML de una string

<!DOCTYPE html>
<html>
<body>

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

</body>
</html>

Salida: Hello World!




Validar un entero

Vamos usar la function filter_var() para validar si la variable $int es entero o no

Ejemplo de codigo

    <?php
    $int = 100;
    
    if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
      echo("El entero es valido");
    } else {
      echo("El intero no es valido");
    }
    ?> 



filter_var() y problema con el cero (0)

Para resolver este problema utilize el seguiente codigo:

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT)
=== false) {
  echo("Intero es valido");
} else {
  echo("Intero no es valido");
}
?> 



Validar una dirección IP

Continuamos usando la function filter_var() para validar una IP

ejemplo de codigo

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
  echo("$ip El IP es valido");
} else {
  echo("$ip El IP no es valido");
}
?> 



validar una dirección de correo electrónico

La function filter_var() es utilizada en el seguiente ejemplo, primero para eliminar cualauer caracter invalido

Segundo para validar el correo electronico

 <?php
 $email = "juan.carlos@example.com";
 
 // Remove all illegal characters from email
 $email = filter_var($email, FILTER_SANITIZE_EMAIL);
 
 // Validate e-mail
 if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
   echo("$email es valido");
 } else {
   echo("$email no es valido");
 }
 ?> 



Desinfectar y validar una URL

Igual que anterormente vamos usar la function filter_var()

  • Primero para eliminar cualquier caracter extrano
  • Segundo para confirmar si la $url es correcta

<?php
$url = "https://frioyelectronica.blogspot.com";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
  echo("$url is a valid URL");
} else {
  echo("$url is not a valid URL");
}
?> 




Publicar un comentario

0 Comentarios