Filtragem de dados

Filtrando e validando dados no PHP com filter_var()

O assunto de hoje é segurança. É bastante comum o seguinte cenário: o programador precisa validar um e-mail e vai para o Google e digita “expressão regular para validar e-mail” ou então “como validar e-mail com PHP”. O que acontece nesse caso? Somos soterrados por uma infinidade de informações e ficamos sem saber exatamente o que irá nos servir.

Contudo, desde a versão 5.2 do PHP está disponível a função filter_var(). Seu objetivo é filtrar e validar informações dentro do PHP. No artigo de hoje, vou realizar um estudo sobre as peculiaridades dessa função e mostrar como é fácil utilizá-la para aumentar a segurança de sua aplicação.

Validate e Sanitize

Os filtros dividem-se em dois tipos: validate e sanitize. Gosto de traduzi-los como validação e limpeza, respectivamente. O objetivo dos filtros de validação (validate) é verificar se determinado valor corresponde a um padrão previamente especificado. Já os filtros de limpeza (sanitize) irão retirar caracteres que não correspondam ao padrão permitido.

Cada filtro possui uma constante correspondente. No capítulo de filtros do manual do PHP é possível encontrar uma lista completa com todos os filtros disponíveis.

A função filter_var() obedece ao seguinte protótipo:

mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Sendo assim, o único parâmetro obrigatório é o primeiro, que indica o valor a ser filtrado. Porém, o filtro padrão é não aplicar filtro nenhum. Dessa forma, pra que ocorra de fato uma filtragem, é necessário especificar o segundo parâmetro. Continue Lendo

php7-logo

Lançado o PHP 7.0.1

Foi publicada ontem (17/12) a primeira release do PHP 7 desde o seu lançamento, há duas semanas.

Essa atualização é altamente recomendada para quem já estiver utilizando o PHP 7 em produção, pois contém diversos bugfixes.

A lista de mudanças no core, publicadas no site, são as seguintes: Continue Lendo

O que não fazer no PHP 7

10 coisas para não fazer no PHP 7

Com o lançamento do PHP 7, surge a oportunidade de podermos, de certa forma, melhorarmos algumas práticas que vínhamos executando.

Neste post estão reunidas algumas “manias” que é melhor deixarmos de lado para poder aproveitar tudo que de melhor o PHP tem a nos oferecer.

1. Não utilize funções mysql_*

Finalmente chegou o tempo em que não seremos mais apenas orientados a não utilizar as funções mysql_*. No PHP 7 essas funções foram retiradas, o que significa que você terá que mudar para as funções (muito melhores, por sinal) mysqli_*, ou então utilizar alternativas melhores ou mais flexíveis como PDO ou um ORM.

2. Evite desperdício de código

Em outras palavras: não escreva código inútil que desperdice o desempenho. Na verdade, a velocidade no PHP 7 aumentou tanto que pode esconder alguns problemas na arquitetura da aplicação. Não se satisfaça com o desempenho da sua aplicação só porque o PHP 7 a tornou mais rápida. Continue Lendo

Imagem de Geolocalização

Como modificar ou forjar geolocalização no navegador

Fala, galera! Tudo certinho?

Continuando meus estudos em cima da API do Google Maps (o último post foi sobre como encontrar coordenadas de locais próximos usando SQL), acabei encontrando uma dificuldade: como fazer o navegador pensar que estou em outro lugar?

Dando uma olhada nas Ferramentas de Desenvolvedor do Google Chrome descobri que é possível emular geolocalização utilizando coordenadas definidas pelo usuário. Pesquisei um pouco mais e descobri também como forjar a geolocalização no Firefox. Agora eu conto pra vocês como funciona!

Como os browsers detectam minha localização?

Com o advento do HTML5, tornou-se possível obter as coordenadas geográficas de quem está usando o navegador por meio de uma requisição JavaScript bastante simples: navigator.geolocation.getCurrentPosition().

Contudo, o usuário pode escolher se irá aceitar ou não compartilhar essas informações. Continue Lendo

Google Maps

Como procurar locais próximos usando SQL

E aí, galera! Tudo certo?

Estou fazendo alguns estudos com a API do Google Maps e isso me levou pensar de que maneira é possível encontrar endereços próximos utilizando SQL. Conduzindo minhas pesquisas, encontrei algumas coisas e gostaria de compartilhar.

Antes de mais nada, a Fórmula de Haversine!

Você deve estar se perguntando: o que diabos é Fórmula de Haversine? Não tema, pois a resposta está aqui!

A fórmula de Haversine é uma importante equação usada em navegação, fornecendo distâncias entre dois pontos de uma esfera a partir de suas latitudes e longitudes. É um caso especial de uma fórmula mais geral de trigonometria esférica, a lei dos Haversines, relacionando os lados a ângulos de uma esfera “triangular”.

Fonte: Wikipedia – Fórmula de Haversine

Basicamente, essa fórmula serve para fazer uma triangulação em uma esfera e ajuda encontrar pontos próximos de determinada coordenada geográfica. Leia mais sobre ela no artigo da Wikipedia.

Montando a consulta de triangulação

De posse da fórmula, precisamos convertê-la em SQL. Com base em um estudo disponibilizado na própria documentação da API do Google Maps, fiz algumas adaptações e montei a estrutura que apresento a seguir.

O primeiro passo é montar a tabela que irá armazenar os dados referente aos endereços. Para este exemplo, vamos utilizar uma tabela bastante simples, contendo apenas idnomeenderecolat (latitude) e lng (longitude). O endereço, neste caso, serve muito mais para complementação dos dados (ou para uma eventual busca pela geolocalização) do que propriamente para o cálculo. Continue Lendo

php7-logo

PHP 7 (RC 3) já está disponível!

Já faz alguns dias que foi lançada terceira versão release candidate do PHP7.

Conforme anúncio publicado no site do PHP, já é possível baixar a RC3 para testá-la. Algumas das novidades do PHP 7 incluem: Continue Lendo