Filtrando dados de variáveis com filter_input()
Um dica muito interessante para manter os dados que entram na sua aplicação confiáveis é sanitizar e validar esses dados sempre, para que seu sistema não corra o risco de ser invadido facilmente.
Para isso no PHP utilizamos uma função que faz esse papel muito bem e ela é a filter_input(). Com ela podemos filtrar os dados que vem da URL, do corpo da requisição, dos cookies do navegador, dados do servidor, variáveis de ambiente e dados da sessão do usuário. Muita coisa não?! Veja abaixo alguns filtros que você pode utilizar com essa função poderosíssima:
Anatômia da Função filter_input
A assinatura da função se dá da seguinte forma filter_input($tipo, $nomeVariavel, $filter);
1° Parâmetro: Tipos de input do primeiro parâmetro:
– INPUT_GET
– INPUT_POST
– INPUT_COOKIE
– INPUT_SERVER
– INPUT_ENV
2° Parâmetro: Nome da variável que desejamos filtrar que se encontra dentro do primeiro parâmetro.
3° Parâmetro: O ID do filtro que queremos aplicar na variável. Se nada for colocado neste parâmetro o filtro FILTER_DEFAULT será usado ‘automagicamente’.
TIPOS DE FILTROS
Estes são os Tipos de Filtros disponiveis para usar neste 3° parâmetro
# Filtros Sanitizadores (Sanitize filters)
– FILTER_SANITIZE_EMAIL : para remover caracteres que não são de e-mail
– FILTER_SANITIZE_ENCODED: Codifica uma Url para que possa ser manipulada com segurança
– FILTER_SANITIZE_SPECIAL_CHARS: Escapa entidades HTML
# Filtros Validadores (Validate filters)
– FILTER_VALIDATE_BOOLEAN : Valida um dado para retornar TRUE ou FALSE
– FILTER_VALIDATE_DOMAIN : Valida se um nome de domínio é valido
– FILTER_VALIDATE_EMAIL : Valida se é um e-mail válido
– FILTER_VALIDATE_IP: Valida se é um IP válido
A lista completa de filtros você pode encontrar aqui: http://php.net/manual/en/filter.filters.validate.php
// Essa classe tem um método que filtrará os dados passados pela url usando o INPUT_GET class Router { public static function getParam($name, $filter = FILTER_DEFAULT) { return filter_input(INPUT_GET, $name, $filter); } } // Filtra a variável 'search' passada na URL usando o filtro FILTER_SANITIZE_ENCODED $searchURL = Router::getParam("search", FILTER_SANITIZE_ENCODED); // Filtra a variável 'search' passada na URL usando o filtro FILTER_SANITIZE_SPECIAL_CHARS $searchHTML = Router::getParam("search", FILTER_SANITIZE_SPECIAL_CHARS);
Se tudo der certo a função retornar sua variável filtrada, se retornar FALSE então é porque o filtro falhou e se retornar NULL é porque a variável que você disse no 2° parâmetro não foi encontrada.
Até mais amiguinhos, compartilhe essa dica matadora!