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.
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.
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.
$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 |
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:
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:
Será retornado NULL
para todos os outros valores. Exemplos:
// Para
// 'asd' → false
// 'true' → true
$ativo = filter_input(INPUT_POST , 'ativo', FILTER_VALIDATE_BOOLEAN);
// Com a flag
//
// Para
// 'asd' → null
// 'true' → true
$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.
// Para
// artur → false
// artur@email.com → true
// joão@email.com → false
$email = filter_input(INPUT_POST , 'email', FILTER_VALIDATE_EMAIL);
// Para
// artur → false
// artur@email.com → true
// joão@email.com → true
$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.