Guia rápido para filtros PHP

Os filtros PHP são usados ​​para validar e limpar a entrada do usuário. Os filtros PHP ajudam os desenvolvedores da Web a garantir que a entrada dos usuários seja segura e atenda a certos requisitos, como um endereço de e-mail válido, um valor numérico ou um formato específico.

Neste artigo, discutiremos o que são filtros PHP , como eles funcionam e como usá-los efetivamente em seu código PHP.



O que são Filtros PHP?

Os filtros PHP são funções integradas que podem ser usadas para validar e higienizar a entrada do usuário. O objetivo dos filtros é garantir que os dados inseridos pelos usuários sejam seguros e estejam em conformidade com determinados padrões.

Os filtros PHP fornecem uma maneira simples e eficaz de validar e higienizar a entrada do usuário, o que é essencial para a segurança e a usabilidade dos aplicativos da web.

Existem muitas funções de filtro PHP disponíveis que podem ser usadas para validar e limpar dados de maneira rápida e eficiente.

Os filtros podem ser classificados em duas categorias principais: filtros de validação e filtros de sanitização.


Por que usar filtros?

Existem muitos aplicativos da Web que recebem entrada de fontes externas. Entrada/dados podem ser:

  • Entrada de um formulário fornecido pelo usuário.
  • Informações sobre cookies .
  • Dados de serviços da web.
  • Variáveis ​​no servidor.
  • Resultados de uma consulta ao banco de dados.
  • Valide os dados externos sempre!
Os dados enviados que não são válidos podem levar a problemas de segurança em seu site e até quebrá-lo.

Ao usar filtros PHP, você pode garantir que a entrada para seu aplicativo esteja correta e não precisa se preocupar com isso!


Extensão de Filtro PHP

Como parte da validação e sanitização da entrada externa, filtros PHP são usados.

A extensão do filtro PHP tem muitas funções necessárias para verificar a entrada do usuário e foi projetada para simplificar e acelerar o processo de validação de dados para programas PHP.

Antes de usar filtros PHP, é essencial especificar o tipo de filtro, como validação ou sanitização. Além disso, você deve fornecer os dados de entrada que deseja filtrar junto com quaisquer opções ou parâmetros necessários exigidos pelo filtro.

Esta função, filter_list() , pode ser usada para listar os recursos que a extensão de filtro PHP oferece, como:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<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>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Função filtro_var() do PHP

Usando a função filter_var() , você pode verificar e limpar os dados. Uma única variável pode ser filtrada pela função filter_var() usando o filtro especificado.

Duas informações são necessárias:

  • Variáveis ​​a verificar.
  • Tipo de cheque a ser utilizado na avaliação.

Sanitização de cordas

Um processo de sanitização envolve a remoção de caracteres de entrada estrangeira que são ilegais ou inseguros.

O exemplo a seguir mostra como remover todas as tags HTML de uma string usando a função filter_var() :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$string = "<h1>Hello, from mrexamples</h1>";
$sanitize_str = filter_var($string, FILTER_SANITIZE_STRING);
echo $string; //without sanitize
echo $sanitize_str; //after sanitize
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Validar um inteiro

Aqui está um exemplo de como verificar se a variável $number é um inteiro usando a função filter_var() .
Se a variável $number for um inteiro válido, a saída do código abaixo será a seguinte: “ Variable is a valid integer. ” No entanto, se $number não for um inteiro válido, a saída será: “ Variable is not a valid integer “:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$number = 88;
if (!filter_var($number, FILTER_VALIDATE_INT) === false) {
echo("Variable $number is a valid integer");
}
else {
echo("Variable $number is not a valid integer");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Nota : se $number fosse definido como 0, a função acima retornaria a mensagem “ Variable is not a valid integer “.
Você pode resolver esse problema usando o seguinte código:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$number = 0;
if (filter_var($number, FILTER_VALIDATE_INT) === 0 || !filter_var($number, FILTER_VALIDATE_INT) === false) {
echo("Variable $number is a valid integer");
}
else { echo("Variable $number is not a valid integer");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

O exemplo abaixo mostra como você pode usar a função filter_var() e o filtro FILTER_VALIDATE_INT em PHP para validar um inteiro dentro de um intervalo.

O parâmetro opções permite especificar o intervalo para o número inteiro a ser validado.

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$num = 122;
$min_range = 1;
$max_range = 200;
if (filter_var($num, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min_range, "max_range"=>$max_range))) === false) {
echo("$num is not in the range");
} else {
echo("$num is in the range");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Aqui, vamos dar um exemplo de validação da idade de adultos de 18 a 60 anos usando a função filter_var():

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$age = 23;
$options = array('options' => array(
'min_range' => 18,
'max_range' => 60)
);
if (filter_var($age, FILTER_VALIDATE_INT, $options) === false) {
echo "Age is not valid";
} else {
echo "Age is valid";
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Validação de endereço IP

Para verificar se $ip_add é um endereço IP válido, usamos a função filter_var() para realizar a seguinte verificação:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$ip_add = "192.168.0.1";
if (!filter_var($ip_add, FILTER_VALIDATE_IP) === false) {
echo("$ip_add : is valid IP address");
}
else {
echo("$ip_add : is valid IP address");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Validar endereço IPv6

A função filter_var() pode ser utilizada para validar um endereço IPv6 configurando o filtro FILTER_VALIDATE_IP e especificando também o parâmetro flags, que indica que o endereço IPv6 deve ser validado, e a seguir um exemplo de como validar um endereço IPv6 utilizando PHP :

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$ip_v6 = "1ba9:b612:11fc:4d95:5b11:468a:1e4d:3467";
if (!filter_var($ip_v6, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
echo("$ip_v6 is a valid IPv6 address");
} else {
echo("$ip_v6 is not a valid IPv6 address");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Neste exemplo vamos validar o endereço IPv6 enquanto a variável armazena o endereço IPv4:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$ip_v6="127.0.0.0";
if (!filter_var($ip_v6, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
echo("$ip_v6 is a valid IPv6 address");
} else {
echo("$ip_v6 is not a valid IPv6 address");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Endereço de e-mail: validar e higienizar

Para validar o endereço de e-mail , usaremos a função filter_var() para primeiro remover todos os caracteres ilegais da variável $email_add e, em seguida, verificaremos se o endereço de e-mail é válido usando a seguinte sintaxe:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$email_add = "[email protected]";
$email_add = filter_var($email_add, FILTER_SANITIZE_EMAIL); // Remove all illegal characters
// Validating e-mail
if (!filter_var($email_add, FILTER_VALIDATE_EMAIL) === false) {
echo("$email_add : valid email address");
}
else {
echo("$email_add : not valid email address");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Validação e Sanitização de URL

No exemplo a seguir, usamos a função filter_var() para primeiro remover todos os caracteres ilegais de uma URL e, em seguida, determinar se $url é uma URL válida com base nos caracteres removidos:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$url = "https://mrexamples.com";
$url = filter_var($url, FILTER_SANITIZE_URL);// Remove all illegal characters from a url
// Validating url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url :is a valid URL");
}
else {
echo("$url :is not a valid URL");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Validar URLs de string de consulta

Você pode validar uma URL contendo uma string de consulta em PHP usando a função filter_var() com o filtro FILTER_VALIDATE_URL e, em seguida, usando o filtro parse_url() para verificar se contém uma string de consulta. Aqui está um exemplo de como você pode validar uma URL em PHP através da função filter_var():

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$url = "https://mrexamples.com/php?query=filter";
if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
echo("$url is a valid URL containing a query string");
} else {
echo("$url is not a valid URL containing a query string");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Neste exemplo, vamos agora verificar a saída da URL sem o uso de uma string de consulta:

Example: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$url = "https://mrexamples.com/php";
//filtering URL with query string
if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
echo("$url is a valid URL containing a query string");
} else {
echo("$url is not a valid URL containing a query string");
}
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Remover caracteres ASCII

Este exemplo ilustra como limpar uma string usando a função filter_var().

Todas as tags HTML na string, bem como todos os caracteres com valores ASCII > 127 , serão removidos por esta função:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string = "<h1>PHP is Fun!!ÆØö…!</h1>";
$new_string = filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $new_string;
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aqui, estamos pegando outra string para validar e remover caracteres ASCII cujos valores são maiores que 127:

Example: 

1
2
3
4
5
6
7
8
9
10
11
<?php
$string="Mr examples <is> 🅖🅡ⓔⓐ🅣 place for learning ";
$new_string = filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); //eliminates <is> and 🅖🅡ⓔⓐ🅣
echo $new_string;
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Benefícios dos Filtros PHP

Os filtros PHP fornecem benefícios significativos para o desenvolvimento de aplicativos da Web, aprimorando a segurança, melhorando a qualidade dos dados, economizando tempo e custos, melhorando a experiência do usuário e fornecendo flexibilidade e capacidade de personalização.

  • Os filtros PHP ajudam a evitar vulnerabilidades de segurança, como injeção de SQL e ataques de script entre sites ( XSS ), validando e limpando a entrada do usuário. Isso reduz significativamente o risco de violação de dados e acesso não autorizado a informações confidenciais.
  • Ao validar a entrada do usuário em relação a um conjunto de regras, os filtros PHP ajudam a garantir que os dados inseridos pelos usuários sejam precisos e atendam a padrões específicos. Isso resulta em melhor qualidade de dados, o que pode melhorar a funcionalidade geral e a usabilidade dos aplicativos da web.
  • Ele pode economizar seu tempo e dinheiro reduzindo a necessidade de validação e sanitização de entrada manual. Com os filtros PHP, você pode implementar facilmente um conjunto padrão de regras para validar e limpar a entrada do usuário, o que pode economizar tempo e reduzir os custos de desenvolvimento.
  • Você pode garantir que a entrada do usuário seja formatada e validada corretamente, proporcionando uma melhor experiência do usuário para os usuários. Isso pode aumentar a satisfação e a retenção do usuário, levando a melhores resultados de negócios.
  • Ele fornece uma maneira flexível e personalizável de validar e higienizar a entrada do usuário. Você e outros desenvolvedores da Web podem personalizar filtros para atender a requisitos específicos e modificá-los e ampliá-los facilmente conforme necessário.
Nós valorizamos o seu feedback.
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0
+1
0

Assine a nossa newsletter
Digite seu e-mail para receber um resumo semanal de nossos melhores posts. Saber mais!
ícone