Filtros 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 PHP
Los filtros PHP se utilizan para validar y desinfectar la entrada externa.
La extensión de filtro PHP tiene muchas de las funciones necesarias para verificar la entrada del usuario y está diseñada para hacer que la validación de datos sea más fácil y rápida.
La filter_list()
función se puede usar para enumerar lo que ofrece la extensión de filtro PHP:
Ejemplo
<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>
¿Por qué usar filtros?
Muchas aplicaciones web reciben información externa. La entrada/los datos externos pueden ser:
- Entrada del usuario desde un formulario
- Galletas
- 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!
PHP filter_var () Función
La filter_var()
función valida y desinfecta los datos.
La filter_var()
función filtra una sola variable con un filtro especificado. Se necesitan dos datos:
- La variable que desea comprobar
- El tipo de cheque a utilizar
Desinfectar una cuerda
El siguiente ejemplo usa la filter_var()
función para eliminar todas las etiquetas HTML de una cadena:
Ejemplo
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Validar un entero
El siguiente ejemplo usa la filter_var()
función para verificar si la variable $int es un número entero. Si $int es un número entero, la salida del siguiente código será: "El número entero es válido". Si $int no es un número entero, la salida será: "El número entero no es válido":
Ejemplo
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Sugerencia: filter_var() y problema con 0
En el ejemplo anterior, si $int se estableció en 0, la función anterior devolverá "El número entero no es válido". Para resolver este problema, utilice el siguiente código:
Ejemplo
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Validar una dirección IP
El siguiente ejemplo usa la filter_var()
función para verificar si la variable $ip es una dirección IP válida:
Ejemplo
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip is a valid IP address");
} else {
echo("$ip is not a valid IP address");
}
?>
Desinfectar y validar una dirección de correo electrónico
El siguiente ejemplo usa la filter_var()
función para eliminar primero todos los caracteres ilegales de la variable $email, luego verifica si es una dirección de correo electrónico válida:
Ejemplo
<?php
$email = "[email protected]";
// 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 is a valid email address");
} else {
echo("$email is not a valid email address");
}
?>
Desinfectar y validar una URL
El siguiente ejemplo usa la filter_var()
función para eliminar primero todos los caracteres ilegales de una URL y luego verificar si $url es una URL válida:
Ejemplo
<?php
$url = "https://www.w3schools.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");
}
?>
Referencia completa de filtros PHP
Para obtener una referencia completa de todas las funciones de filtro, vaya a nuestra Referencia completa de filtros de PHP. Verifique cada filtro para ver qué opciones y banderas están disponibles.
¡La referencia contiene una breve descripción y ejemplos de uso para cada función!