PHP filtro_input

Resumo : neste tutorial você aprenderá como usar a filter_input()função PHP para obter uma variável externa por nome e filtrá-la.

Introdução à função PHP filter_input()

A função PHP filter_input()permite obter uma variável externa pelo seu nome e filtrá-la usando um ou mais filtros integrados.

O seguinte mostra a sintaxe da filter_input()função:

filter_input ( int $type , string $var_name , int $filter = FILTER_DEFAULT , array|int $options = 0 ) : mixedLinguagem de código:  PHP  ( php )

A filter_input()função possui os seguintes parâmetros:

  • $typeé um de INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVERe INPUT_ENV.
  • $var_nameé o nome da variável a ser filtrada.
  • $filteré o ID do filtro a ser aplicado. Aqui está a lista de filtros válidos . Se você omitir o $filterargumento, a filter_input()função usará o FILTER_DEFAULTid do filtro, que não filtra nada.
  • $optionsé uma matriz associativa que consiste em uma ou mais opções. Quando um filtro aceita as opções, você pode usar um ou mais sinalizadores. Se você quiser usar vários sinalizadores, será necessário separá-los por ( |), por exemplo, FILTER_SANITIZE_ENCODED | FILTER_SANITIZE_SPECIAL_CHARS.

A filter_input()função retorna null, falseou o valor filtrado de acordo com as seguintes regras:

  • Se $var_namenão estiver definido, a filte_input()função retornará null.
  • Se o filtro falhar, a filter_input()função retornará false.
  • Caso contrário, retorna o valor filtrado da variável solicitada.

Exemplo de função PHP filter_input()

O exemplo a seguir usa a filter_input()função para limpar dados de um formulário de pesquisa:

<?php

$term_html = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);
$term_url = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_ENCODED);

?>
<form action="search.php" method="get">
    <label for="term"> Search </label>
    <input type="search" name="term" id="term" value="<?php echo $term_html ?>">
    <input type="submit" value="Search">
</form>

<?php

if (null !== $term_html) {
	echo "The search result for <mark> $term_html </mark>.";
}Linguagem de código:  HTML, XML  ( xml )

Como funciona o formulário.

O formulário contém uma entrada com tipo searche um botão enviar.

Quando você insere um termo de pesquisa, por exemplo, how to use the filter_input functione clica no botão enviar; o formulário usa o método GET para anexar a string de consulta do termo ao URL, por exemplo,

http://localhost/search.php?term=how+to+use+the+filter_input+functionLinguagem de código:  texto simples  ( texto simples )

Este formulário de pesquisa é enviado para si mesmo ( search.php).

A filter_input()função limpa o termo de pesquisa usando os filtros FILTER_SANITIZE_SPECIAL_CHARSe FILTER_SANITIZE_ENCODED.

O FILTER_SANITIZE_SPECIAL_CHARSfiltro retorna um valor para exibição no campo de pesquisa e o FILTER_SANITIZE_ENCODEDfiltro retorna um valor para exibição na página.

filter_input vs. filter_var

Se uma variável não existir, a filter_input()função retorna nullenquanto a filter_var()função retorna uma string vazia e emite um aviso de um índice indefinido.

Suponha que você tenha uma página com o seguinte URL:

http://localhost/search.phpLinguagem de código:  JavaScript  ( javascript )

A filter_input()função a seguir retorna nulle não gera nenhum erro quando você obtém a termvariável do INPUT_GET:

<?php

$term = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);Linguagem de código:  HTML, XML  ( xml )

Saída:

NULLLinguagem de código:  texto simples  ( texto simples )

No entanto, a filter_var()função retorna uma string vazia e emite um erro:

<?php

$term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);
var_dump($term);Linguagem de código:  HTML, XML  ( xml )

Saída:

Notice: Undefined index: term in ...\search.php on line 3
string(0) ""Linguagem de código:  texto simples  ( texto simples )

Portanto, você costuma usar a função isset()ou filter_has_var()para verificar se uma variável está definida antes de passá-la para a filter_var()função como esta:

<?php

if (isset($_GET['term'])) {
    $term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);
    var_dump($term);
}Linguagem de código:  HTML, XML  ( xml )

Além disso, a filter_input()função não obtém os valores atuais das variáveis ​​superglobais $_GET, $_POST,…. Em vez disso, utiliza os valores originais enviados na solicitação HTTP. Por exemplo:

<?php

$_GET['term'] = 'PHP'; // doesn't have any effect on INPUT_GET
$term = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);Linguagem de código:  PHP  ( php )

Saída:

NULLLinguagem de código:  texto simples  ( texto simples )

Este exemplo tenta atribuir um valor à $_GET['term']variável. No entanto, filter_input()não lê o termo da $_GETvariável atual. Portanto, o script exibe NULL.

Por outro lado, a filter_var()função lê valores da $_GETvariável atual. Por exemplo:

<?php

$_GET['term'] = 'PHP';
$term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);Linguagem de código:  HTML, XML  ( xml )

Saída:

string(3) "PHP"Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a função PHP filter_input()para limpar e validar dados de variáveis ​​externas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *