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 |
| 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");
}
?>

0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias