ARTIGOS

Filtrando o input de dados

Conheça a função filter_input

filter_input

filter_input é uma função do PHP que obtém uma variável externa pelo seu nome e opcionalmente filtra seu valor. A função filter_input além de obter o valor de uma campo pode aplicar filtros no retorno. E esse filtro aplicado pode servir para adicionar uma camada de segurança para a sua aplicação, podendo prevenir SQL injection por exemplo.

  1. filter_input (int $tipo, string $nome_variavel [, int $filtro [, [mixed] $opcoes]])

Tipo

De onde a variável será buscada, um exemplo seria do post de um formulário.

  • INPUT_GET
  • INPUT_POST
  • INPUT_COOKIE
  • INPUT_SERVER
  • INPUT_ENV

Nome da variável

Nome da variável a ser obtida.

Filtro

Filtro a ser aplicado, por padrão é aplicado FILTER_DEFAULT, que resulta em não filtrar

Opções

Opções que alguns tipos de filtro aceitam.

Exemplo básico

Como apresentado anteriormente, além de obter valores é possível filtrá-los com a função input_filter, no exemplo abaixo veremos como obter o valor de um e-mail preenchido em um formulário.

  1. $email = filter_input(INPUT_POST , 'email', FILTER_VALIDATE_EMAIL);

No exemplo acima a variável e-mail foi enviada pelo post de um formulário e foi filtrada pelo filtro FILTER_VALIDATE_EMAIL, se o e-mail for válido o mesmo é retornado caso contrário a função retorna false. Portanto para:

ENTRADA RETORNO
joao.com false
joao@silva.com true

Tipos de filtros

Existem diversos tipos de filtros que podem ser aplicados sobre os valores obtidos pela função input_filter eles vão de filtros e função de higienização até callbacks, para ver a lista completa de tipos acesse: http://br1.php.net/manual/en/filter.filters.php.


Navegando na lista de filtros você pode encontrar alguns como:

FILTER_VALIDATE_BOOLEAN → retorna TRUE para as seguintes opções:

  • 1
  • true
  • on
  • yes

Retorna FALSE para todos os outros valores, é possível alterar o comportamento da função com a flag FILTER_NULL_ON_FAILURE, se esta flag for definida a função irá retornar false para os seguintes casos:

  • 0
  • false
  • off
  • no

Será retornado NULL para todos os outros valores. Exemplos:

  1. // Para
  2. // 'asd' → false
  3. // 'true' → true
  4. $ativo = filter_input(INPUT_POST , 'ativo', FILTER_VALIDATE_BOOLEAN);
  5. // Com a flag
  6. //
  7. // Para
  8. // 'asd' → null
  9. // 'true' → true
  10. $ativo = filter_input(INPUT_POST , 'ativo', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);

FILTER_VALIDATE_EMAIL valida se o valor é ou não de um endereço de e-mail válido. Este filtro verifica endereços segundo a sintaxe definida pela RFC 822. É possível usar a flag FILTER_FLAG_EMAIL_UNICODE para permitir que parte do e-mail contenha caracteres Unicode, veja o exemplo abaixo.

  1. // Para
  2. // artur → false
  3. // artur@email.com → true
  4. // joão@email.com → false
  5. $email = filter_input(INPUT_POST , 'email', FILTER_VALIDATE_EMAIL);
  6. // Para
  7. // artur → false
  8. // artur@email.com → true
  9. // joão@email.com → true
  10. $email = filter_input(INPUT_POST , 'email', FILTER_VALIDATE_EMAIL, FILTER_FLAG_EMAIL_UNICODE);

Existem outros tipos de filtros, por exemplo validar inteiros, decimais, IPs, MACs, etc. Você pode ver a lista completa de filtros aqui.

COMENTE SOBRE