Ir para conteúdo

POWERED BY:

Arquivado

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

Laylla Cristine

Validação de CPF

Recommended Posts

Fala galera, preciso de ajuda pro codigo de validação do cpf, eu preciso do seguinte, eu ja tenho um código de validação so que eu preciso que tenha nesse código uma condição que não deixe o usuário se cadastrar mais de uma vez, ai vai o código. Obrigada.

 

// Função que valida o CPF
function validaCPF($cpf)
{	// Verifiva se o número digitado contém todos os digitos
   $cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);

// Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
   if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
{
return false;
   }
else
{   // Calcula os números para verificar se o CPF é verdadeiro
       for ($t = 9; $t < 11; $t++) {
           for ($d = 0, $c = 0; $c < $t; $c++) {
               $d += $cpf{$c} * (($t + 1) - $c);
           }

           $d = ((10 * $d) % 11) % 10;

           if ($cpf{$c} != $d) {
			return false;

           }
       }
       return true;
   }
}
// Verifica se o botão de validação foi acionado
if(isset($_POST['btvalidar']))
{// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
$cpf_enviado = validaCPF($_POST['cpf']);
// Verifica a resposta da função e exibe na tela
if($cpf_enviado == true)
	echo "CPF VERDADEIRO";
elseif($cpf_enviado == false)
	echo "CPF FALSO";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça isso diretamente no banco de dados. Defina a coluna CPF como UNIQUE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Você deve adicionar uma Constraint.

 

ALTER TABLE %tabela% ADD CONSTRAINT %unique_cpf% UNIQUE ( %cpf% )

 

%tabela% => o nome da sua tabela

%unique_cpf% => um nome para a constraint

%cpf% => o nome da coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de fazer o INSERT faça um SELECT simples buscando pelo CPF.

 

Se o número de linhas retornadas for zero, você autoriza, se for 1, você barra. Se for mais de um, bem, você tem problemas sérios de invasão :yay:

 

Faça isso diretamente no banco de dados. Defina a coluna CPF como UNIQUE.

Segundo informações que recebi um tempo atrás, UNIQUE = EVIL. Com poucos registros vá lá, mas conforme a coisa crescer...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Você deve adicionar uma Constraint.

 

ALTER TABLE %tabela% ADD CONSTRAINT %unique_cpf% UNIQUE ( %cpf% )

 

%tabela% => o nome da sua tabela

%unique_cpf% => um nome para a constraint

%cpf% => o nome da coluna

 

 

Isso é usando o código SQL ? Eu não faço idéia de como faz =( eu to aprendendo sozinha a mexer no php e sql, ai ta meio punk pra mim.

 

Antes de fazer o INSERT faça um SELECT simples buscando pelo CPF.

 

Se o número de linhas retornadas for zero, você autoriza, se for 1, você barra. Se for mais de um, bem, você tem problemas sérios de invasão :yay:

 

 

Segundo informações que recebi um tempo atrás, UNIQUE = EVIL. Com poucos registros vá lá, mas conforme a coisa crescer...

 

 

Pois é, meu cadastro é grande e como faço o código? Eu to aprendendo a mexer no php.

Compartilhar este post


Link para o post
Compartilhar em outros sites
UNIQUE = EVIL

Não posso dizer nada a esse respeito pois nunca ouvi falar. Entretanto, posso falar da minha experiência.

Trabalhei com uma base de 30 mil pessoas em constante crescimento e com SGBD Postgre. Não houve problemas. Uma boa validação na hora de inserir e o banco de dados fará o resto.

 

Isso é usando o código SQL ?

Sim, faça as alterações necessárias e execute o SQL

 

 

Nota: nunca deve-se salvar as máscaras no banco de dados. Remova os pontos e hífen. Isso é uma convenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso dizer nada a esse respeito pois nunca ouvi falar. Entretanto, posso falar da minha experiência.

Trabalhei com uma base de 30 mil pessoas em constante crescimento e com SGBD Postgre. Não houve problemas. Uma boa validação na hora de inserir e o banco de dados fará o resto.

 

 

Sim, faça as alterações necessárias e execute o SQL

 

 

Nota: nunca deve-se salvar as máscaras no banco de dados. Remova os pontos e hífen. Isso é uma convenção.

 

 

Bom, como faço o código SQL ? E esse código é direto no Banco de dados ou eu posso inserir ele no codigo da validação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Direto no banco, você executa ele apenas uma vez.

Assim você definirá que, no Postgre, não podem haver valores (não nulos) repetidos.

 

Diferente do SQL Server que um valor nulo (nulo não é valor) também deve ser único.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Direto no banco, você executa ele apenas uma vez.

Assim você definirá que, no Postgre, não podem haver valores (não nulos) repetidos.

 

Diferente do SQL Server que um valor nulo (nulo não é valor) também deve ser único.

 

 

Certo. E como fica o código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. E como fica o código?

Exatamente como eu postei lá em cima, só substitua as palavras que eu destaquei.

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.