Filtros PHP
Validando dados = Determine se os dados estão na forma correta.
Sanitizing data = Remova qualquer caractere ilegal dos dados.
A extensão do filtro PHP
Os filtros PHP são usados para validar e higienizar a entrada externa.
A extensão de filtro PHP tem muitas das funções necessárias para verificar a entrada do usuário e foi projetada para tornar a validação de dados mais fácil e rápida.
A filter_list()
função pode ser usada para listar o que a extensão de filtro PHP oferece:
Exemplo
<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 que usar filtros?
Muitos aplicativos da Web recebem entrada externa. As entradas/dados externos podem ser:
- Entrada do usuário de um formulário
- Biscoitos
- Dados de serviços da web
- Variáveis do servidor
- Resultados da consulta do banco de dados
Você deve sempre validar dados externos!
Dados enviados inválidos podem levar a problemas de segurança e quebrar sua página da web!
Ao usar filtros PHP, você pode ter certeza de que seu aplicativo obtém a entrada correta!
Função PHP filter_var()
A filter_var()
função valida e limpa os dados.
A filter_var()
função filtra uma única variável com um filtro especificado. São necessários dois dados:
- A variável que você deseja verificar
- O tipo de cheque a ser usado
Higienize uma corda
O exemplo a seguir usa a filter_var()
função para remover todas as tags HTML de uma string:
Exemplo
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Validar um inteiro
O exemplo a seguir usa a filter_var()
função para verificar se a variável $int é um inteiro. Se $int for um inteiro, a saída do código abaixo será: "Integer is valid". Se $int não for um inteiro, a saída será: "Integer is not valid":
Exemplo
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Integer is valid");
} else {
echo("Integer is not valid");
}
?>
Dica: filter_var() e problema com 0
No exemplo acima, se $int foi definido como 0, a função acima retornará "Integer não é válido". Para resolver este problema, use o código abaixo:
Exemplo
<?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 um endereço IP
O exemplo a seguir usa a filter_var()
função para verificar se a variável $ip é um endereço IP válido:
Exemplo
<?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");
}
?>
Higienize e valide um endereço de e-mail
O exemplo a seguir usa a filter_var()
função para primeiro remover todos os caracteres ilegais da variável $email e, em seguida, verificar se é um endereço de e-mail válido:
Exemplo
<?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");
}
?>
Higienize e valide um URL
O exemplo a seguir usa a filter_var()
função para primeiro remover todos os caracteres ilegais de um URL e, em seguida, verificar se $url é um URL válido:
Exemplo
<?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");
}
?>
Referência completa do filtro PHP
Para obter uma referência completa de todas as funções de filtro, acesse nossa Referência completa de filtros PHP. Verifique cada filtro para ver quais opções e sinalizadores estão disponíveis.
A referência contém uma breve descrição e exemplos de uso para cada função!