E os posts?

Calma, tudo ao seu tempo.

Já falei aqui que quero postar sobre Orientação a Objetos, sobre os livros que comprei recentemente, sobre o Joomla! e claro, continuar os artigos sobre validação ( afinal, temos de concluir o que iniciamos, não é? ). Meu próximo post será a continuação dos posts sobre validação. Não, eu ainda não o escrevi, mas o farei ainda hoje, mais tardar amanhã. Mas apesar de não ter escrito, já sei o que farei.

Em seguida, devo escrever um post sobre o Joomla! ( estou fazendo aquele componente que comentei anteriormente ), e está sendo uma experiência legal.

Neste meio tempo, provavelmente haverão alguns posts menos nerds, ou geek como preferirem. Minha vida acadêmica está voltando ao normal e com ela minhas responsabilidades com o Movimento Estudantil ( não, eu não fiquei a toa minhas férias e deixei tudo parado, não totalmente ). E com maior vivencia do assunto, as idéias, conflitos e reflexões vão “aflorando” e pretendo usar este espaço como válvula de escape, afinal, ninguém é de ferro – eu muito menos.

Está chegando a era da filosofia nerd neste blog ( não precisam se assustar, não serei tão incisivo, não no começo ), mas o mundo nerd não perderá mais um espaço, continuarei falando MUITO sobre programação, tecnologia ( que não comentei ainda ) e afins.

Até breve.

Validação de dados em PHP5 – Parte 2

Continuando a série de artigos sobre validação de dados ( veja a primeira parte ) com PHP5.

Nota: usarei “cliente” para me referir a um usuário do sistema, ou mesmo outro sistema que interaja conosco. Usarei também ER para designar expressão regular, que é o assunto base deste post.

Anteriormente, havíamos abordado uma validação mais geral, onde tínhamos de aceitar vários tipos de dados.

Agora, vamos abordar uma situação onde esperamos um dado específico vindo do cliente – usarei “cliente” para referir tanto ao usuário do sistema quanto outros sistemas – por exemplo, em um campo de formulário, onde esperamos um nome ou um email.

Um dos recursos mais eficientes em se tratando de validação é o uso de expressões regulares. E é com isto que iremos trabalhar.

Vamos a uma definição:

“Uma expressão regular, na Informática, define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.” Fonte: Wikipédia.

Então uma expressão regular é um padrão. Por isso não podemos utilizar uma expressão regular para validar algo que desconhecemos, porque seria muito difícil ou mesmo impossível encontrar um padrão para tudo.

Não pretendo explicar os fundamentos de uma expressão regular, se desejar alguma referência, recomendo o site: http://guia-er.sourceforge.net

Como podemos utilizar uma expressão regular para validar um campo de um formulário? Precisamos de uma função do PHP que faça esta verificação para a gente, uma função que compare nossa expressão regular com o valor a ser testado.

O PHP oferece algumas funções para isso, vejamos duas delas:

 

ereg( string $expressão , string $variável [, array $registros ] )

 

Retorna TRUE se $variável “bater” com $expressão, e FALSE se a expressão não casar ou se acontecer algum erro. referência

//nossa ER, um padrão para CEP
$cepER = ‘^[0-9]{5}\-[0-9]{3}$’;
//vamos supor que temos a variável $_POST[‘cep’] vinda de um formulário

//fazemos então a verificação
if( ereg( $cepER, $_POST[‘cep’] ) )
echo “Isso parece um CEP válido”;
else
echo “Isso não é um CEP válido”;

Por que não podemos afirmar se o CEP está correto? Simplesmente porque com a ER analisamos apenas a forma da variável, ou seja, se ela tem o mesmo número de caracteres, se são do mesmo tipo e estão nas mesmas posições. Para afirmarmos com segurança que o CEP é válido, teríamos de verificar se o valor está cadastrado nos Correios ou em alguma outra fonte segura. Mas isso foge ao nosso escopo.

Essa função ereg permite fazer a buscar por um padrão em uma string utilizando padrão POSIX, mas o PHP fornece outra função para a mesma tarefa, com desempenho melhor, e baseado no padrão PCRE ( compatível com PERL ). Esta função é a preg_match.

preg_match( string $expressão , string $variável [, array &$matches [, int $flags [, int $offset ]]] )

Retorna 1 se a $variável “bater” com a $expressão, e 0 caso contrário. referência.

Vamos ver o uso do preg_match na mesma situação do exemplo anterior:

//nossa ER, um padrão para CEP
$cepER = ‘/[0-9]{5}\-[0-9]{3}/’;

//vamos supor que temos a variável $_POST[‘cep’] vinda de um formulário
//fazemos então a verificação, poderíamos omitir o “== 1”, já que o PHP converte 0 e 1 para false e true respectivamente
if( preg_match ( $cepER, $_POST[‘cep’] ) == 1 )
echo “Isso parece um CEP válido”;
else
echo “Isso não é um CEP válido”;

Notem a diferença na nossa ER. Mudamos os caracteres de inicio e final, isto acontece por conta da diferença entre os padrões que as funções utilizam.

O artigo já está muito grande, continuarei a falar sobre ER nos próximos artigos. Vamos ver como criar ER para validar telefone, email e por último CPF ( que incluiremos outro teste de validação além da ER ).

Uma última dica, utilizem ER juntamente com o método do artigo anterior, para aumentar a segurança de seu sistema ( pense em outras formas para isso também ).

Por enquanto é só.

Não esqueçam de validar tudo.

Sem assunto

Um dia quente, muito quente.

Sem nada interessante pra fazer. Podia estar a beira de uma praia, rio, piscina ou qualquer fonte de água. Mas não, estou em casa, dentro de um quarto quente, em frente a um computador procurando algo interessante. Sem sucesso.

Acaba de chegar um livro nerd que comprei: PHP Programando com Orientação a Objetos … me pareceu muito interessante, já dei uma folheada, mas neste calor, não tem como ficar lendo. Não tenho ar-condicionado.

Pelo menos uma coisa boa aconteceu hoje, entrei no internet banking e fui ver meu saldo. Adivinhem, meu pouco dinheiro não está sendo tributado pela CPMF, pois é, como é sabido pela maioria, desde o dia 1º de Janeiro de 2008 estamos livres desta extorsão, vamos ver quanto tempo isso dura. Na verdade já não dura muito, porque o IOF e outros impostos foram aumentados, nada que tenha o mesmo efeito que a CPMF tinha, mas já estão arrumando um jeito de não perder o peixe.

Segundo um instituto aí de estudos tributários ( não me lembro onde li, acho que no Terra ), os encargos pagos em média por uma pessoa com a CPMF era de 200 reais ao ano, sim, isso só da CPMF, fora o resto dos impostos. Agora com o IOF maior, vamos pagar em média 40 reais no ano. Melhorou, mas ainda tem muito para melhorar.

Falta um pouco de interesse da população, um pouco de vontade política e de cunho social. Falta vergonha na cara para exigir o que é seu.

Bom, falei tudo isso porque está quente. Muito quente.