Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FellipeVale

Chamar funções da classe através do array

Recommended Posts

Boa noite comunidade,

 

Estou tentando desenvolver uma pagina de validação de campos. Funciona resumidamente assim:

 

- Tenho os campos em html.

- Chama a página validar.php com jquery usando o $.getJSON. Envio informações como nome do campo e valor do campo via GET.

- Minha página validar.php recupera esses valores GET, trata eles e através de um array chama as funções desejadas. EX:

 

if(isset($_GET['campo_name']) && isset($_GET['campo_value'])):

$get = $_GET['campo_name'];
$val = $_GET['campo_value'];
$conect = new VALIDACAO;
$functions = array(
'nome' => $conect->nomeEsobrenome($val),
'sobrenome' => $conect->nomeEsobrenome($val),
'email' => $conect->email($val)
);
$functions[$get];
$verifica = $conect->verifica();
if(!$verifica):
gerarJson();
else:
return false;
endif;
Antes de eu inserir a parte que chama a função do email 'email' => $conect->email($val) , funciona tudo como planejado, mas quando eu insiro essa parte do email ou qualquer outra parte abaixo do 'nome' e 'sobrenome' o código não retorna nada. E até o nome e sobrenome param de retornar os valores.
O pior é que eu não tenho idéia do que seja para procurar no Google. Será que alguém aqui entende a questão e pode me mostrar a solução?
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, obrigado pela atenção.

 

Realmente fiz um teste no código e quando retirei a chamada para função 'nomeEsobrenome' a função 'email' funcionou em partes.

 

O que estou dizendo?

 

Segue as funções:

 

 

 

public function nomeEsobrenome($value)
{
$aSI = $this->antiSqlInjection($value);
$this->validBasic($aSI, 20, 2);
$this->validLetter($aSI);
$this->validEqual($aSI);
}
public function email($value)
{
$aSI = $this->antiSqlInjection($value);
$this->validBasic($aSI, null, null);
$conta = "^[a-zA-Z0-9\._-]+@";
$domino = "[a-zA-Z0-9\._-]+.";
$extensao = "([a-zA-Z]{2,4})$";
******** Quando eu retirei a função 'nomeEsobrenome' a função 'email' funcionou até aqui, quando coloca o código principal para a validação do email o código para de funcionar.************
$pattern = $conta.$domino.$extensao;
if(!ereg($pattern, $aSI)):
$this->_error = true;
else:
setcookie("email", $aSI, time() + 60);
endif;
}
att,

Olá amigo, obrigado pela atenção.

 

Realmente fiz um teste no código e quando retirei a chamada para função 'nomeEsobrenome' a função 'email' funcionou em partes.

 

O que estou dizendo?

 

Segue as funções:

 

 

 

public function nomeEsobrenome($value)
{
$aSI = $this->antiSqlInjection($value);
$this->validBasic($aSI, 20, 2);
$this->validLetter($aSI);
$this->validEqual($aSI);
}
public function email($value)
{
$aSI = $this->antiSqlInjection($value);
$this->validBasic($aSI, null, null);
$conta = "^[a-zA-Z0-9\._-]+@";
$domino = "[a-zA-Z0-9\._-]+.";
$extensao = "([a-zA-Z]{2,4})$";
******** Quando eu retirei a função 'nomeEsobrenome' a função 'email' funcionou até aqui, quando coloca o código principal para a validação do email o código para de funcionar.************
$pattern = $conta.$domino.$extensao;
if(!ereg($pattern, $aSI)):
$this->_error = true;
else:
setcookie("email", $aSI, time() + 60);
endif;
}
att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, não sou expert, mas percebi que você está setando o valor em várias outras funções de segurança, estas funções retornam algo? Se sim, onde está colocando este retorno? A função do sqlinjection devolve algo realmente?Já depurou? checa as etapas do código, se estão havendo os retornos

 

Você está enviando parâmetros, mas e os retornos.

 

São apenas sugestões que tenho a partir do que estou vendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ldovale,

 

as funções setadas inserem valor em variáveis globais da classe que por sua vez são verificadas por um função dentro da classe. Ou seja, quando as funções são chamadas elas exercem um verificação da string recebida e caso o retorno seja negativo ela adere um valor na variável global da classe.E na página cadastrar.php eu chamo essa função 'verifica', ela verifica se existe algum valor na variável global, se sim, ela retorna um erro.

 

O que esta me intrigando é o fato desta função 'email' não esta funcionando. Já tentei retirar essas chamadas das fuções e deixar somente a verificação do email, mas nada muda.

 

att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano, me diz uma coisa, a validação do html5 <input type='email' > e apenas na sua validação sqlInjection não seria segurança suficiente para seu aplicação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ldovale,

 

Não, não seria. Estou tentando deixar o código arrumado em um único arquivo.

 

Acabei de descobrir uma coisa.

 

quando eu tiro 'ereg($pattern, $aSI)' ou 'eregi($pattern, $aSI)' da função email, funciona normalmente. O que me levou a crer que o erro esta aqui.

 

O código:

 

public function email($value)
{
$aSI = $this->antiSqlInjection($value);
$this->validBasic($aSI, null, null);
$conta = "^[a-zA-Z0-9\._-]+@";
$domino = "[a-zA-Z0-9\._-]+.";
$extensao = "([a-zA-Z]{2,4})$";
$pattern = $conta.$domino.$extensao;
if(eregi($pattern, $aSI)):
$this->_error = true;
else:
setcookie("email", $aSI, time() + 60);
endif;
}
Pode me ajudar? :sick:

UHULLLLLOWERKAKATING!!!!

 

Consegui!!!!!!!!

Apenas troquei o ereg ou eregi pelo preg_match.

 

Essa string é a que funciona: "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/"

 

Ela é diferente do ereg ou eregi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.