Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Regex

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 3

Utilizando Regex para verificação de campos de formulário

Por Érika Focke


http://www.erikafocke.com.br

É muito importante realizar uma verificação nos campos de formulário, não apenas
para evitar o envio de dados errados, mas principalmente para aumentar a segurança
na hora de lidar com bancos de dados.

Para tanto, utilizaremos Regular expressions, ou REGEX, uma expressão especificada


pelo programador que conterá os caracteres válidos ou não para determinado campo.

Isso é muito importante principalmente nos campos de senha, pois há casos onde no
campo senha uma pessoa mal-intencionada poderá realizar uma pesquisa mysql para
retornar a senha de determinado usuário, ou executar outras operações não
autorizadas através de formulários – o que é chamado de “Sql Injection”.

Para evitar essas falhas de segurança, devemos fazer uso das funções de regex.

São elas:

ereg() -> Verifica se a variável bate com a expressão regular, case sensitive

ereg_replace() -> Repõe uma variável por uma expressão regular, case sensitive

eregi() -> Verifica se a variável bate com a expressão regular, case insensitive

eregi_replace() -> Repõe uma variável por uma expressão regular, case insensitive

split() -> Divide uma variável em array usando uma expressão regular como
delimitador, case sensitive

spliti() -> Divide uma variável em array usando uma expressão regular como
delimitador, case insensitive

Para fazermos a verificação no formulário, as funções comumente utilizadas são ereg()


e eregi()

Formando Expressões

^ Início de uma linha


$ Final de uma linha
n? Zero ou apenas uma ocorrência do caracter 'n'
n* Zero ou mais ocorrências do caracter 'n'
n+ Pelo menos uma ou mais ocorrências do caracter 'n'
n{2} Exatamente duas ocorrências do caracter 'n'
n{2,} Pelo menos 2 ou mais ocorrências do caracter 'n'
n{2,4} De 2 a 4 ocorrências do caracter 'n'
. Qualquer caracter
() Parênteses para expressões grupais
(.*) Zero ou mais ocorrências de qualquer caracter
(n|a) Ou 'n', ou 'a'
[1-6] Qualquer digito compreendido entre 1 e 6
[c-h] Qualquer letra minúscula compreendida entre 'c' e 'h'
[D-M] Qualquer letra maiúscula compreendida entre 'D' e 'M'
[^a-z] Qualquer caracter EXCETO qualquer letra minúscula entre 'a' e 'z'.

Importante: O símbolo '^' só é tido como excessão de uma sequência se ele vier
exatamente no início da sequência especificada. Se ele vier no início da expressão de
regex(fora dos parênteses ou colchetes de expressões), ele será interpretado como
"início de linha", e não como termo de negação. E se ele vier no meio de uma
sequência, será interpretado como parte da mesma.

Exemplos:

[^0-9] -> Qualquer caracter exceto digitos de 0 a 9 (ou seja, apenas letras)

[53^a-z] -> Caracteres permitidos: 5, 3, ^, letras de 'a' a 'z'

^.{2} -> Quaisquer 2 caracteres no início da linha

FUNÇÃO EREG()

Sintaxe: ereg("expressao",$variavel)

Verificação de campo de e-mail

<?php
if(! ereg("^([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-
Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([a-z,A-Z]){2,3}([0-9,a-z,A-
Z])?$", $input_email ) ) {
echo "Caracteres Inválidos no campo de e-mail!!!";
}
?>
Explicando a expressão:

^([0-9,a-z,A-Z]+) -> No início da linha, pelo menos uma ou mais ocorrências dos
caracteres de 0-9, ou a-z, ou A-Z

([.,_,-]([0-9,a-z,A-Z]+))* -> Seguidos ou não (Zero ou mais ocorrências) da expressão:


ponto ou underline ou hifen seguidos de caracteres de 0-9, a-z ou A-Z que apareçam
pelo menos uma vez ou mais

[@] -> seguido de arroba

([0-9,a-z,A-Z]+) -> seguidos de pelo menos um ou mais caracteres de 0-9, ou a-z, ou A-


Z

([.,_,-]([0-9,a-z,A-Z]+))* -> Seguidos ou não(zero ou mais ocorrências) da expressão:


ponto ou underline ou hifen seguidos de caracteres de 0-9, a-z ou A-Z que apareçam
pelo menos uma vez ou mais

[.] -> seguidos de ponto

([0-9,a-z,A-Z]){2,3} -> Seguidos de 2 a 3 ocorrências de caracteres a-z ou A-Z

([a-z,A-Z])?$ -> Seguidos de uma ou nenhuma ocorrência de caracteres de a-z ou A-Z,


no final da linha

A expressão ereg foi precedida de um '!' para retornar se valor contrário, ou seja, se a
variável $input_email não coincidir com a expressão especificada, ele executa o
comando echo "caracteres inválidos...";

Essa expressão aceita e-mails com pontos, underlines e hifens.

A partir desse exemplo fica fácil criar outras expressões mais simples, como para
verificar o campo de senha:

<?php
if (!ereg("^([A-Z,a-z,0-9,_,-]){4,}", $senha) ) {
echo "Senha com caracteres inválidos";
}
?>

Nesse caso a expressão aceitará caracteres de A-Z, a-z, 0-9, underline e hifen.

Você também pode gostar