Cauan Cabral – Geek Geek, nerd e apaixonado por tecnologia

25fev/080

Falta de tempo…

Pois é...

Estou trabalhando, estudando e colaborando . Não estou conseguindo dedicar o tempo que gostaria a escrita neste blog. Mas não vou abortá-lo, pretendo apenas aumentar o já grande intervalo entre posts.

Meu próximo post na área de programação deverá ser sobre ActionScript. Pretendo mostrar a facilidade de se criar interfaces elaboradas com a linguagem.

Antes de encerrar, gostaria de avisar aos que já utilizam ou pretendem utilizar o Joomla! que a extensão que ajudei a traduzir para o nosso português está com uma nova versão: Attachments 1.2.2 ( Anexos 1.2.2 ).

Outra coisa, para os que se interessaram pela validação de dados em PHP5, vale a pena dar uma olhada nesta outra alternativa: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7838. Onde é abordado o uso de filtros da própria linguagem para validar ( confesso que nunca utilizei, mas me pareceu algo extremamente funcional, e com ótimo potencial ). Fica então as dicas.

Até breve.

10fev/080

Validação de dados em PHP5 – final

Olá a todos,

Continuando e finalizando a sequência de artigos sobre validação ( veja também a parte 1, 2 e 3 ), iremos abordar a união de procedimentos na validação.

Como vimos anteriormente, todo cuidado é pouco, então quanto maior o número de testes que submetermos um dado, maior a chance de ele chegar a nós da forma que esperamos ( sem causar danos a integridade do sistema ).

Vimos que a utilização de ER é essencial, toda vez que soubermos o padrão do valor esperado. Ou seja, se sabemos que um número de telefone é da forma "3333-4444", e que isso nunca irá mudar, teremos as ER's como nossa arma mais forte.

Mas existem casos em que não temos idéia do que o usuáiro pode inserir em um campo. Nestes casos, uma ER não tem grande utilidade, e temos de recorrer a outros recursos, como algumas funções do próprio PHP ou MySQL/Postgree para "limpar" as informações, de modo que ela não prejudique o fucionamento do sistema. Algumas destas funções são:

  • strip_tags() , que tenta limpar ( retirar tags HTML e PHP ) e retornar uma string passada como parâmetro.
  • htmlentities() , substitui TODOS os caracteres que possuírem um correspondente html.

Unindo a utilização destas funções, ER ( quando convir, não se esqueça que para se utilizar uma ER temos de ter um padrão esperado ) e cuidado na hora de pegar valores dos arrays superglobais ( $_POST, $_GET, ... ), teremos um sistema com uma boa segurança a injeção de códigos por terceiros.

Vamos então fazer uma função ( não farei uma classe pois a idéia é ser bem especifico, podendo a função ser utilizada como um método sem problemas ).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function valida( $valor, $tipo )
{
$erCPF = '/[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}/';
$erCEP = '/[0-9]{5}\-[0-9]{3}/';
$erFONE = '/(0((([0-9]{2}){2})|([0-9]{2})))?[0-9]{3,5}\-[0-9]{4}/';
$erEMAIL = '/[[:alnum:]]\@[[:alnum:]]+(\.[[:alnum:]])+/';
$erDATA = '/(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[012])\/[12][0-9]{3}/';
$erTEXTO = '/([a-z][A-Z])*/';//aceita somente letras
$erALPHANUM = '/[[:alnum:]]*/';//aceita numeros e letras
$erNUM = '/[0-9]*/';//aceita somente numeros
$erALL = '*';//aceita qualquer coisa
$tipo = strtoupper( trim($tipo) );
$padrao = 'er'.$tipo; //faço concatenação do prefixo 'er' com o tipo, para formar o nome da variavel com o padrao correto.
$valor = strip_tags( htmlentities(trim($valor)), '<a><b><i><p>' ); //limpo a variavel com valor, retirando possíveis funções do PHP ou tags HTML que possam ser prejudiciais ao sistema, mas permitindo algumas que podem ser uteis em determinados casos
 
if( preg_match( $$padrao, $valor ) )
{
echo 'O dado passou pela validação de padrão.<br/>';
//podemos validar melhor alguns dados
switch( $tipo )
{
case 'CPF':
if ( validaCPF( $valor ) )
echo 'O CPF é válido.';
else
{
echo 'O CPF não é valido';
return false;
}
break;
//você pode por um 'case' para cada tipo de dado que quiser validar com alguma formula especifica
default:
echo 'O dado foi validado';
break;
}
return true;
}
else
echo 'O dado não passou pela validação de padrão.<br/>';
 
return false;
}

Bom, este é um exemplo de função que poderíamos utilizar para validação de dados, podendo ser inserida em uma classe com um método dela.

Mas como utilizamos ela? Simples, veja( supondo que temos vindo de um formulário um campo email, via POST:

1
2
3
4
if( valida( $_POST['email'], 'email' ) )
echo 'Email válido';
else
echo 'Email inválido';

Fica fácil não?

Bom, nesta função, é chamada outra função ( validaCPF ), que não é de minha autoria, e que dei os devidos créditos na parte 3 desta série. Esta função implementa o algoritmo de validação do CPF, com seu digito verificador e tudo mais. É um algoritmo muito difundido, e bem documentado na internet, faça uma busca se estiver interessado no assunto. É interessante.

Função para validação de dado - ( veja o fonte )

É isso, espero ter ajudado, qualquer coisa, mail-me.

Até a próxima.