Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
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. ```php 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. ```php $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: ```php // 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. ```php // 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](http://br1.php.net/manual/en/filter.filters.sanitize.php).
COMENTE SOBRE