Ir para conteúdo

Arquivado

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

Danv

Verifica se Login ou Email já existem...

Recommended Posts

Ola pessoal,

 

Fiz o seguinte, na pagina de cadastro de um Usuario, apos preenchido o formulário, é verificado se os campos Login e Email já existem... caso sim, informa ao usuario para digitar um novo login ou senha ou os dois.... (pelo menos era isso que deveria esta acontecendo ehehehhe)... vejam o codigo:

 

// RS VERIFICA EMAIL E LOGIN   	 $PEmail = "1";   	 if (isset($_POST['email'])) {       $PEmail = (get_magic_quotes_gpc()) ? $_POST['email'] : addslashes($_POST['email']);   	 }       	 PLogin = "1";   	 if (isset($_POST['login'])) {       PLogin = (get_magic_quotes_gpc()) ? fLimpa($_POST['login']) : addslashes($_POST['login']);   	 }       	 mysql_select_db($database_conn, $conn);   	 $query_rsVerificacao = sprintf("SELECT * FROM usuarios WHERE email='%s' OR login='%s'", $PEmail,PLogin);   	 $rsVerificacao = mysql_query($query_rsVerificacao, $conn) or die(mysql_error());   	 $row_rsVerificacao = mysql_fetch_assoc($rsVerificacao);   	 $totalRows_rsVerificacao = mysql_num_rows($rsVerificacao);       	 if($totalRows_rsVerificacao != "0"){   	             if($row_rsVerificacao['email'] && $row_rsVerificacao['login'] != "0"){            $nerro = "5";            }elseif($row_rsVerificacao['login'] != "0"){            $nerro = "4";            }elseif($row_rsVerificacao['email'] != "0"){            $nerro = "3";            }                      mysql_free_result($rsVerificacao);                        header ("Location: erro.php?id=".$nerro."");         	    	 }else{                .... REALIZA O CADASTRO ......

 

Esta acontecendo o seguinte, quando digito o Login e Email, ou apenas um dos dois que já exista no BD a variavel $nerro, sempre retorna o primeiro valor, ou seja, "5", ..... tudo bem se os dois campos ja existirem, mas se é apenas o email, é para retornar o valor "3"..... (o que não acontece... retorna o valor "5"....)

 

Não estou conseguindo ver por que... se alguem puder me ajudar,

 

Bom, desde já agradeço ao pessoal,

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque album teste para $row_rsVerificacao['email' neste If:

if($row_rsVerificacao['email'] && $row_rsVerificacao['login'] != "0"){

para o login você está testando != 0, mas e para o e-mail, ele deve estar vindo como falso, por isso não entra na primeira condição.

 

Tente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu walace....

 

Acho que o problema esta ocorrendo na consulta....

 

Realizei os seguintes testes... peguei o rs de verificação... segue o codigo dele alterado:

 

// RS VERIFICA EMAIL E LOGIN   	 $PEmail = "teste@teste.com.br";       	 $PLogin = "Teste";       	 mysql_select_db($database_conn, $conn);   	 $query_rsVerificacao = sprintf("SELECT * FROM usuarios WHERE email='%s' OR login='%s'", $PEmail,PLogin);   	 $rsVerificacao = mysql_query($query_rsVerificacao, $conn) or die(mysql_error());   	 $row_rsVerificacao = mysql_fetch_assoc($rsVerificacao);   	 $totalRows_rsVerificacao = mysql_num_rows($rsVerificacao);      if($row_rsVerificacao['login'] != ""){  $login = "1";  }else{  $login = "0";  }    if($row_rsVerificacao['email'] != ""){  $email = "1";  }else{  $email = "0";  }    if($login + $email == "2"){  $nerro = "5";  }elseif($login != "0"){  $nerro = "4";  }elseif($email != "0"){  $nerro = "3";  }          ?><HTML>Login:<?php echo $row_rsVerificacao['login']; ?>Varlogin:<?php echo $login; ?>Email:<?php echo $row_rsVerificacao['email']; ?>Varemail:<?php echo $email; ?>Erro:<?php echo $nerro;?></HTML><?php mysql_free_result($rsVerificacao); ?>            
Acontece o seguinte, se eu setar as variaveis [$PEmail] e [$PLogin] com valores já existentes (por exemplo, Login: Teste e Email: teste@teste.com.br)... o resultado disso é o seguinte:

 

 

$PEmail = "teste@teste.com.br";

 

$PLogin = "Teste";

 

 

Login: Teste

 

Varlogin:1

 

Email:teste@teste.com.br

 

Varemail:1

 

Erro:5

 

beleza!.... mas se eu setar apenas uma variavel com valor conhecido.... a [$PEmail] por exemplo.... retorna os DOIS valores tb!!!!

 

O resultado fica:

 

 

$PEmail = "teste@teste.com.br";

 

$PLogin = "qualquercoisa";

 

 

Login: Teste

 

Varlogin:1

 

Email:teste@teste.com.br

 

Varemail:1

 

Erro:5

 

 

Caso eu faça o mesmo com a outra variavel.... acontece a mesma coisa.... a consulta esta me retornando os DOIS valores (email e login) para um login OU um email já existente....

 

 

$query_rsVerificacao = sprintf("SELECT * FROM usuarios WHERE email='%s' OR login='%s'", $PEmail,PLogin);

 

Alguem saberia como realizar esta consulta sem retornar os DOIS valores.....

 

 

(Outra coisa que eu estava errando.... não poderia realizar a verificação != "0", se o campo digitado não existir no DB, o resultado sera "" (vazio) e não "0")

 

Valeu walace.... bom, acho que fui mais especifico agora....

 

Bom.... agora acho que este assunto não seria mais neste grupo (PHP) né.... desculpa ae gente.

 

Será que alguem teria como me ajudar?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer funcionar, mas com DOIS Recort Sets.... putz..... dois rs..... uma para o login outro para o email.... segue o codigo:

 

// RS VERIFICA EMAIL	$PVemail = "1";	if (isset($_POST['email'])) {   $PVemail = (get_magic_quotes_gpc()) ? $_POST['email'] : addslashes($_POST['email']);	}	mysql_select_db($database_conn, $conn);	$query_rsVemail = sprintf("SELECT * FROM usuarios WHERE email = '%s'", $PVemail);	$rsVemail = mysql_query($query_rsVemail, $conn) or die(mysql_error());	$row_rsVemail = mysql_fetch_assoc($rsVemail);	$totalRows_rsVemail = mysql_num_rows($rsVemail);	// RS VERIFICA LOGIN	$PVlogin = "1";	if (isset($_POST['login'])) {   $PVlogin = (get_magic_quotes_gpc()) ? fLimpa($_POST['login']) : addslashes($_POST['login']);	}	mysql_select_db($database_conn, $conn);	$query_rsVlogin = sprintf("SELECT * FROM usuarios WHERE login = '%s'", $PVlogin);	$rsVlogin = mysql_query($query_rsVlogin, $conn) or die(mysql_error());	$row_rsVlogin = mysql_fetch_assoc($rsVlogin);	$totalRows_rsVlogin = mysql_num_rows($rsVlogin);	if($row_rsVemail['email'] != ""){	$email = "1";	}else{	$email = "0";	}	if($row_rsVlogin['login'] != ""){	$login = "1";	}else{	$login = "0";	}	if($login + $email == "2"){	$nerro = "5";	}elseif($login != "0"){	$nerro = "4";	}elseif($email != "0"){	$nerro = "3";	}	if($totalRows_rsVemail != "0" || $totalRows_rsVlogin != "0"){	  mysql_free_result($rsVemail);  mysql_free_result($rsVlogin);  header ("Location: erro.php?id=".$nerro."");		}else{...... CADASTRA USUARIO ......

Não consigo fazer esta verificação em apenas UM rs.... (como na msg anterior).... alguem sabe se tem como fazer em apenas um rs....

 

 

bom, esta funcionando, mas sera que da para fazer esta verificação em apenas um consulta?

 

valeu pessoal.

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.