Ir para conteúdo

POWERED BY:

Arquivado

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

André Ricardo Theodoro

cadastrar somente uma única vez

Recommended Posts

Bom dia pessoal!

 

Estou desenvolvendo um sistema de cadastro onde a pessoa

deve inserir seu cpf ou cnpj, o problema é que um cpf ou cnpj

só pode ser cadastrado somente uma vez.

 

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif O meu teste para verificar não deu certo, estava fazndo assim:

$db = mysql_select_db("a_cad_usuario");
   $sql = "SELECT * FROM a_cad_usuario ORDER BY cad_cpf_cnpj";
   $resultado = mysql_query($sql)
   while ($linha=mysql_fetch_array($resultado)) {
   $teste = $linha['cad_cpf_cnpj'];

   if ($teste == $cad_cpf_cnpj){
	   echo ('Não foi possível realizar seu cadastro pois seu documento
			  CPF/CNPJ já está cadastrado!!');
   }else{

 

Qm puder me ajudar fico no aguardo!

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim amigo!

A variável é declarada no mesmo script!

 

Mas já resolvi o problema........não vai acreditar q

era só 1 ponto e vírgula q estava faltando nesta linha:

 

$resultado = mysql_query($sql)

 

 

http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif erro de iniciante!!!!

 

 

Valew!

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sete o campo como UNIQUE também, o usuário sempre consegue burlar o front-end, se você fechar no banco também, terá uma segurança a mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sete o campo como UNIQUE também, o usuário sempre consegue burlar o front-end, se você fechar no banco também, terá uma segurança a mais.

Não entendi, como assim fazer sete do campo com UNIQUE!???

 

E surgio mais um problema.......esse código é pra verificar se o cpf ou cnpj

já estão cadastrados e se estiverem não cadastrar novamente....

pro cpf está funcionando corretamente, mas , pr cnpj to usando a mesma lógica

e até da a mensage dizndo q já é cadastrado mas msmo assim cadastra....

 

Vo posta meu código aí pra ver se alguém consegue me ajudar:

<?
include ('conecta.php');
  if (${"pessoa"}=="on")
  {
	CalculaCPF($cad_cpf_cnpj);
  }
  else
  {
   CalculaCNPJ($cad_cpf_cnpj);
  }
   
  //Calcula CPF

  function CalculaCPF($cad_cpf_cnpj)
  {
   $db = mysql_select_db("a_cad_usuario");
   $sql = "SELECT * FROM a_cad_usuario ORDER BY cad_cpf_cnpj";
   $resultado = mysql_query($sql);
   while ($linha=mysql_fetch_array($resultado)) {
   $teste = $linha['cad_cpf_cnpj'];

   if ($teste == $cad_cpf_cnpj){
	 header("Location: cad_not_cpf.php");
	  break;
   }else{
   $RecebeCPF=$cad_cpf_cnpj;
   
   //Retirar todos os caracteres que nao sejam 0-9
   $s="";
   for ($x=1; $x<=strlen($RecebeCPF); $x=$x+1)
   {
	$ch=substr($RecebeCPF,$x-1,1);
	if (ord($ch)>=48 && ord($ch)<=57)
	{
	  $s=$s.$ch;
	}
   }
   
   $RecebeCPF=$s;
   if (strlen($RecebeCPF)!=11)
   {
	echo "<h1>É obrigatório o CPF com 11 dígitos</h1>";
   }
   else
	 if ($RecebeCPF=="00000000000")
	 {
	   $then;
	   echo "<h1>CPF Inválido</h1>";
	 }
	 else
	 {
	  $Numero[1]=intval(substr($RecebeCPF,1-1,1));
	  $Numero[2]=intval(substr($RecebeCPF,2-1,1));
	  $Numero[3]=intval(substr($RecebeCPF,3-1,1));
	  $Numero[4]=intval(substr($RecebeCPF,4-1,1));
	  $Numero[5]=intval(substr($RecebeCPF,5-1,1));
	  $Numero[6]=intval(substr($RecebeCPF,6-1,1));
	  $Numero[7]=intval(substr($RecebeCPF,7-1,1));
	  $Numero[8]=intval(substr($RecebeCPF,8-1,1));
	  $Numero[9]=intval(substr($RecebeCPF,9-1,1));
	  $Numero[10]=intval(substr($RecebeCPF,10-1,1));
	  $Numero[11]=intval(substr($RecebeCPF,11-1,1));

	 $soma=10*$Numero[1]+9*$Numero[2]+8*$Numero[3]+7*$Numero[4]+6*$Numero[5]+5*
	 $Numero[6]+4*$Numero[7]+3*$Numero[8]+2*$Numero[9];
	 $soma=$soma-(11*(intval($soma/11)));

	if ($soma==0 || $soma==1)
	{
	  $resultado1=0;
	}
	else
	{
	  $resultado1=11-$soma;
	}

	if ($resultado1==$Numero[10])
	{
	 $soma=$Numero[1]*11+$Numero[2]*10+$Numero[3]*9+$Numero[4]*8+$Numero[5]*7+$Numero[6]*6+$Numero[7]*5+
	 $Numero[8]*4+$Numero[9]*3+$Numero[10]*2;
	 $soma=$soma-(11*(intval($soma/11)));

	 if ($soma==0 || $soma==1)
	 {
	   $resultado2=0;
	 }
	 else
	 {
	  $resultado2=11-$soma;
	 }
	 if ($resultado2==$Numero[11])
	 {
	  echo "<h1>CPF Válido</h1>";  
	  $cad_nome = $_POST['cad_nome'];
	  $cad_cpf_cnpj = $_POST['cad_cpf_cnpj'];
	  $cad_usuario = $_POST['cad_usuario'];
	  $cad_senha1 = $_POST['cad_senha'];
	  $cad_senha2 = $_POST['cad_senha'];
	  $cad_email = $_POST['cad_email'];
	  $pessoa = $_POST['pessoa'];
	  
	  $sql = "INSERT INTO a_cad_usuario 
(cad_nome, cad_cpf_cnpj, cad_usuario, cad_senha1, cad_senha2, cad_email)
 VALUES ('$cad_nome', '$cad_cpf_cnpj', '$cad_usuario', MD5('$cad_senha1'), ('$cad_senha2'), '$cad_email')";
	
$result = mysql_query($sql) or die(mysql_error());
	if($result)
	{
		echo "Dados inseridos com Sucesso!";
	}
	 }
	 else
	 {
	 echo "<h1>CPF Inválido</h1>";
	 echo "Não foi possível inserir!";
	 }
	}
	else
	{
	 echo "<h1>CPF Inválido</h1>";
	 echo "Não foi possível inserir!";
	}
   }
  }
 }
}
// Fim do Calcula CPF


//Função que calcula CNPJ

  function CalculaCNPJ($cad_cpf_cnpj)
  {
   $db = mysql_select_db("a_cad_usuario");
   $sql = "SELECT * FROM a_cad_usuario ORDER BY cad_cpf_cnpj";
   $resultado = mysql_query($sql);
   while ($linha=mysql_fetch_array($resultado)) {
   $teste = $linha['cad_cpf_cnpj'];

   if ($teste == $cad_cpf_cnpj){
	 header("Location: cad_not_cpf.php");
	  break;
   }else{
   $RecebeCNPJ=$cad_cpf_cnpj;

   $s="";
   for ($x=1; $x<=strlen($RecebeCNPJ); $x=$x+1)
   {
	$ch=substr($RecebeCNPJ,$x-1,1);
	if (ord($ch)>=48 && ord($ch)<=57)
	{
	 $s=$s.$ch;
	}
   }

   $RecebeCNPJ=$s;
   if (strlen($RecebeCNPJ)!=14)
   {
	 echo "<h1>É obrigatório o CNPJ com 14 dígitos</h1>";
   }
   else
	if ($RecebeCNPJ=="00000000000000")
	{
	 $then;
	 echo "<h1>CNPJ Inválido</h1>";
   }
   else
   {
	$Numero[1]=intval(substr($RecebeCNPJ,1-1,1));
	$Numero[2]=intval(substr($RecebeCNPJ,2-1,1));
	$Numero[3]=intval(substr($RecebeCNPJ,3-1,1));
	$Numero[4]=intval(substr($RecebeCNPJ,4-1,1));
	$Numero[5]=intval(substr($RecebeCNPJ,5-1,1));
	$Numero[6]=intval(substr($RecebeCNPJ,6-1,1));
	$Numero[7]=intval(substr($RecebeCNPJ,7-1,1));
	$Numero[8]=intval(substr($RecebeCNPJ,8-1,1));
	$Numero[9]=intval(substr($RecebeCNPJ,9-1,1));
	$Numero[10]=intval(substr($RecebeCNPJ,10-1,1));
	$Numero[11]=intval(substr($RecebeCNPJ,11-1,1));
	$Numero[12]=intval(substr($RecebeCNPJ,12-1,1));
	$Numero[13]=intval(substr($RecebeCNPJ,13-1,1));
	$Numero[14]=intval(substr($RecebeCNPJ,14-1,1));

	$soma=$Numero[1]*5+$Numero[2]*4+$Numero[3]*3+$Numero[4]*2+$Numero[5]*9+$Numero[6]*8+$Numero[7]*7+
	$Numero[8]*6+$Numero[9]*5+$Numero[10]*4+$Numero[11]*3+$Numero[12]*2;

	$soma=$soma-(11*(intval($soma/11)));

   if ($soma==0 || $soma==1)
   {
	 $resultado1=0;
   }
   else
   {
	$resultado1=11-$soma;
   }
   if ($resultado1==$Numero[13])
   {
	$soma=$Numero[1]*6+$Numero[2]*5+$Numero[3]*4+$Numero[4]*3+$Numero[5]*2+$Numero[6]*9+
	$Numero[7]*8+$Numero[8]*7+$Numero[9]*6+$Numero[10]*5+$Numero[11]*4+$Numero[12]*3+$Numero[13]*2;
	$soma=$soma-(11*(intval($soma/11)));
	if ($soma==0 || $soma==1)
	{
	 $resultado2=0;
	}
   else
   {
   $resultado2=11-$soma;
   }
   if ($resultado2==$Numero[14])
   {
	echo "<h1>CNPJ válido</h1>";
   }
	  $cad_nome = $_POST['cad_nome'];
	  $cad_cpf_cnpj = $_POST['cad_cpf_cnpj'];
	  $cad_usuario = $_POST['cad_usuario'];
	  $cad_senha1 = $_POST['cad_senha'];
	  $cad_senha2 = $_POST['cad_senha'];
	  $cad_email = $_POST['cad_email'];
	  $pessoa = $_POST['pessoa'];
	  
	  $sql = "INSERT INTO a_cad_usuario 
(cad_nome, cad_cpf_cnpj, cad_usuario, cad_senha1, cad_senha2, cad_email)
 VALUES ('$cad_nome', '$cad_cpf_cnpj', '$cad_usuario', MD5('$cad_senha1'), ('$cad_senha2'), '$cad_email')";
	
$result = mysql_query($sql) or die(mysql_error());
	if($result)
	{
		echo "Dados inseridos com Sucesso!";
		echo $cad_cpf_cnpj;
	}
   else
   {
   echo "<h1>CNPJ inválido</h1>";
   echo "Não foi possível inserir!";
   }
  }
  else
  {
   echo "<h1>CNPJ inválido</h1>";
   echo "Não foi possível inserir!";
	}
   }
  }
 }
}
//Fim do Calcula CNPJ
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara vou te dar um conselho, seu código está muito ruim, é uma péssima idéia selecionar todos registros do banco para compara-los com um valor isso vai funcionar bem enquanto tiver poucos registros mas a medida que sua base de dados for aumentando seu sistema irá sofrer problemas de performance.

 

Como já disseram acima use uma restrição na tabela, defina o campo de CPF e CNPJ como UNIQUE, essa restrição não vai permitir que sejam cadastrados registros iguais.

 

O certo seria você capturar uma excessão do banco e enviar uma mensagem de erro quando o cara tentar cadastrar um cpf repitido, ou fazer como já disseram no tópico use um "Where" no seu select e pegue o mysql_num_rows() retornado, isso é menos ruim de se fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte...caso você nao queira colocar o campo UNIQUE, como varias pessoas ja falaram acima, sugiro algo como:

 

"select COUNT(*) AS total FROM tabela WHERE campo_cnpj = '{$cnpj}'";

 

ai você verifica se o total é >=0, se for, existe ja um cnpj/cpf cadastrado, caso contrario você faz o cadastro no banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie sua tabela da seguinte forma

 

CREATE TABLE nome_da_tabela(

nome_do_campo tipo_do_campo UNIQUE

);

 

Basta escrever unique em frente ao campo que você pretende colocar a restrição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP
$sql = SELECT * FROM tabela WHERE cnpj = $cnpj;

$verifica = mysql_query ($sql);

if (mysql_num_rows ($verifica) > 0) {

     echo "CNPJ já cadastrado...";

}

 

tentae...

 

Bah tentei mas naum teve muito sucesso!!

Ta dando o seguinte erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/webdi/public_html/laboratorio/acesso/php/valida.php on line 136

http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

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.