Categorias
Desenvolvimento Web Joomla! PHP

Sentiram falta?

Olá, faz quase uma semana que disse que estaria com o blog novo pronto, “zero bala”, a todo vapor ( tudo bem, eu não falei isso ). Acontece que estou com muito trabalho a fazer, aquele negócio todo de Joomla! e outros projetos. Vou fazer um breve relato do que estou fazendo, mesmo sabendo que não interessa a ninguém:

Estou trabalhando com o Joomla! 1.5RC4 ( mais precisamente a versão 9958 do SVN ), apesar de não ser uma versão final, tem se mostrado extremamente estável. Comecei hoje a me aventurar na criação de componentes, utilizando o novo framework do mesmo. A documentação está no inicio, mas já da pra fazer bastante coisa ( não que eu tenha feito ). Já comentei um pouco sobre as extensões que estou utilizando ( ou tentando utilizar ).

Me aproximei do desenvolvimento do componente Attachments, e estou tentando traduzir a sua ajuda agora ( a interface já está toda em Português, ainda precisa ser melhorada, mas já pode ser utilizada sem problemas ). Já tenho algumas idéias para inserir no componente, assim que tiver um tempinho, vou ver se consigo implementar, senão, mando para “OS CARAS” as idéias.

Descobri estes dias dois webmail: RoundCube e o Uebimiau. O primeiro tem uma interface extremamente agradável, muito prática e ágil, porém, está na versão 0.1, e logo tentando enviar um email, já esbarrei em um problema: o mostrador de envio de mensagem ( feito usando técnica assíncrona – AJAX ) ficava em loop infinito, enquanto a mensagem já havia sido enviada. O segundo, apesar de não possuir uma interface tão elaborada, é extremamente funcional. Estou até pensando em contactar o desenvolvedor para sugerir um porte ao PHP5 e orientação a objetos. Mas antes disto, estou criando um componente do Joomla! para utilizar o Uebimiau dentro de sua interface. Um detalhe legal, o Uebimiau, é um projeto de um brasileiro.

Com relação a este componente de utilização de um webmail dentro do Joomla! ( a propósito, já existe um componente para rodar o RoundCube dentro do Joomla!, mas apesar de ele se instalar sem problemas, quando tento carregar a página que deveria mostrar o sistema, a tela fica em branco ) deparei com um problema. A base de usuários do Joomla! é independente da base de usuários do webmail. Como eu poderia fazer para que eles acessassem o email sem ter de enviar uma nova senha e login? Pensei um bucado e cheguei a uma solução: Armazenar em uma tabela do banco a identificação do usuário no Joomla! e seus dados para login no webmail ( claro, tudo devidamente protegido ). Daí, ao pedir para entrar no webmail, o componente iria efetuar o login no sistema para o usuário. A principio a idéia me parece boa, vamos ver no que vai dar, preciso terminar algumas coisas. Aliás, alguém saberia me informar uma forma de se passar variáveis do tipo $_POST sem ter de declarar uma tag form do html, com os campos e seus valores? Acredito que ficaria bem mais seguro. Talvez pela biblioteca CURL do PHP dê, vou ver.

Hmm, isso me lembrou que estava fazendo uma pesquisa sobre autenticação em PHP, acho que vou escrever uma artigo a respeito ( apesar de haver vários na web, talvez eu consiga ajudar alguém abordando diferente ). Uma das coisas interessantes é a autenticação HTTP, que é uma forma segura de se barrar pessoas não autorizadas.

Categorias
Desenvolvimento Web Joomla! Programação

Sem assunto – parte 3

“Puta mundo injusto meu!” by Boça.

É como disse o sábio Boça.
Passei meu sábado e meu domingo trabalhando.
Um final de semana inteiro na frente do PC. Se fosse para outro próposito até que não teria sido tão cansativo.

Como comentei em um post anterior, estou estudando o Joomla! 1.5 e alguns componentes para ele ( JEvents, Community Builder, Hydra, uddeIM ). Estava olhando o dotProject, mas ele não atenderia as minhas necessidades facilmente, então parti somente para o Joomla!.

Incrível a facilidade de se utilizar este CMS. Seu código está muito organizado e legível. Em pouco tempo dá para se entender bem o funcionamento de tudo.

Estou enfrentando alguns problemas, uns por parte do próprio Joomla! outros por parte de alguns módulos/componentes. O hydra ( componente para administração de projetos ) não me permite acesso pelo FrontEnd, algo essencial para meu propósito, provavelmente o erro é meu, mas não consegui achar nada a respeito.
O JEvents está com vários erros. Não consegue gravar o arquivo de configurações, exibe um calendário repetidamente no frontend. Além de não permitir alterações nas configurações ( sempre ocorre um erro apontando para uma página inexistente ).
O uddeIM funciona até. O único problema são seus textos e menus, que eu não consigo achar os arquivos que o geram para alterar. Ele está gerando uma saída html errada – não coloca àspas em um valor de atributo html. Também não consigo achar onde devo fazer a tradução dos termos.
O Community Builder está quase 100%. Inclusive estou fazendo a tradução do arquvo de internacionalização para o português do Brasil. Assim que terminar, estarei disponibilizando aqui e em alguma comunidade Joomla!. Meu único problema com ele é não descobrir onde é gerado o menu que fica acima do perfil dos usuários, para retirar o primeiro botão ( que direciona para a página do Community Builder ).

Mas até que está bem, levando em conta que nunca havia usado nenhum destes sistemas e que meu está com o WAMP bem meia boca.

Se alguém tiver idéia de como arrumar estes problemas, ou souber o que estou fazendo de errado, deixe um comentário ou envie-me um email: cauanc [em] gmail [ponto] com

Categorias
Desenvolvimento Web PHP Programação

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.