Ir para conteúdo

POWERED BY:

Arquivado

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

andersongarcia

Impedir cadastro de usuários com mesmo nome e e-mail

Recommended Posts

Olá pessoal, não tenho muito conhecimento de php e mysql e preciso de uma luz.

 

Tenho um script para cadastro de usuários em meu site mas percebi que um mesmo e-mail e usuário podem se cadastrar várias vezes na base de dados. Quero resolver o problema, para que não se permita mais a duplicidade nos dados.

 

Através do fórum consegui para que a base da dados não permita o cadastro do usuário com o mesmo e-mail e quando se preenche os dados do formulário de cadastro, aparece a mensagem no navegador (Duplicate entry 'nome do usuario-fulano@gmail.com' for key 'user_name').

 

Mas agora o que necessito é que apareça uma mensagem na mesma página do cadastro dizendo para o usuário que o nome de usuário e o e-mail já está sendo usado por outra pessoa...

 

Alguém poderia me ajudar e explicar qual e aonde devo colocar no meu código essas informações? Desde já agradeço.

 

Aqui estão os dados:

 

arquivo (registration1.php)

 

<?php 
include("config/db_connect.php");

if(isset($_POST['sub']))
{
	$cap = 'notEq';
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['captcha'] == $_SESSION['cap_code']) {
    // Captcha verification is Correct. Do something here!	
		
	// Member Registration code	
	$today 			= date('d/m/Y');
	$sdate 			= date('d-m-Y h:i:s A');
	
	$user_birthdate = $_POST['days'].'-'.$_POST['months'].'-'.$_POST['years'];
	$age 			= Age($user_birthdate);
	$password		= base64_encode($_POST['password']);
	
	$insert = mysql_query ( " insert into user set 	user_name = '".$_POST['uname']."' , 
			age 			= '".$age."' , 
			user_password 	= '".$password."' , 
			user_birthdate 	= '".$user_birthdate."' , 
			user_gender 	= '".$_POST['gender']."' , 
			user_country 	= '".$_POST['country']."' , 
			user_ethnicity 	= '".$_POST['ethnicity']."' , 
			user_email 		= '".$_POST['email1']."' , 
			reg_date 		= '$today' , 
			status			='1' " ) or die(mysql_error());
			
	if($insert)
	{
		$last_id 			= mysql_insert_id();
		mysql_query("insert into user_info set user_id='".$last_id."'") or die (mysql_error());
		$_SESSION['last_id']= $last_id; 
		
		$asd 	= "select * from user where user_id = $last_id";
		$Signin	= mysql_fetch_array(mysql_query($asd));
		
		$_SESSION['userid']   = $Signin['user_id'];
		$_SESSION['username'] = $Signin['user_name'];
		
		$words 						= explode(' ', trim($Signin['user_name']));
		$_SESSION['usernamechat']	= $words[0];
		
		$_SESSION['SESS_email'] 	= $Signin['user_email'];
		
		$lastlog = mysql_query("insert into user_lastlogin set user_id = '".$_SESSION['userid']."' , lastlogin = '$sdate' , ipaddress = '".$_SERVER['REMOTE_ADDR']."' , online_status = '1' ");
		//mailing

//Sent mail to registered member for confirmation and login details		
		$to 	 = $_SESSION['SESS_email'];
		$subject = 'LogIn Information';
		
		// message
		$message = '
		<html>

Lembrando

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

 

 

$verifica_email = mysql_query("select email from user where email='".$_POST['email1']."'")or die(mysql_error());

$count = mysql_num_rows($verifica_email);

 

 

if($count > 0){

echo 'Usuario ja cadastrado com esse e-mail.';

exit;

}else{

coloca o codigo para inserir o registro na base de dados!

}

 

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bom tratar os dados vindo do formulário.

Aproveitando o código do @vmolina:

<?php

if (isset($_POST['email1']) && !($_POST['email1']=="") ){
  
   $email = $_POST['email1']  ;
   $verifica_email = mysql_query("select email from user where email='$email'")or die(mysql_error());
   $count = mysql_num_rows($verifica_email);

   if($count > 0){
      echo 'Usuario ja cadastrado com esse e-mail.';
   }else{
       //coloca o codigo para inserir o registro na base de dados!
   }
}else{

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://technet.microsoft.com/en-us/library/ms175132(v=sql.105).aspx

 

O link trata sobre MSSQL mas serve para qualquer SGDB com suporte básico às standards SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de inserir o código, eu devo fazer alguma alteração no banco de dados?

 

Defina o campo email como unique, e trate o erro 23000 que é gerado.

 

é menos dor de cabeça lá na frente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o código final que funcione deverá ficar assim?:

 

<?php 
include("config/db_connect.php");

if(isset($_POST['sub']))
{
	$cap = 'notEq';
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['captcha'] == $_SESSION['cap_code']) {
    // Captcha verification is Correct. Do something here!	
		
	// Member Registration code	
	$today 			= date('d/m/Y');
	$sdate 			= date('d-m-Y h:i:s A');
	
	$user_birthdate = $_POST['days'].'-'.$_POST['months'].'-'.$_POST['years'];
	$age 			= Age($user_birthdate);
	$password		= base64_encode($_POST['password']);
	
	$insert = mysql_query ( " insert into user set 	user_name = '".$_POST['uname']."' , 
			age 			= '".$age."' , 
			user_password 	= '".$password."' , 
			user_birthdate 	= '".$user_birthdate."' , 
			user_gender 	= '".$_POST['gender']."' , 
			user_country 	= '".$_POST['country']."' , 
			user_ethnicity 	= '".$_POST['ethnicity']."' , 
			user_email 		= '".$_POST['email1']."' , 
			reg_date 		= '$today' , 
			status			='1' " ) or die(mysql_error());
			
			if (isset($_POST['email1']) && !($_POST['email1']=="") ){
  
   $email = $_POST['email1']  ;
   $verifica_email = mysql_query("select email from user where email='$email1'")or die(mysql_error());
   $count = mysql_num_rows($verifica_email);

   if($count > 0){
      echo 'Usuario ja cadastrado com esse e-mail.';
   }else{
       //coloca o codigo para inserir o registro na base de dados!
   }
}else{

}
			
		
			
	if($insert)
	{
		$last_id 			= mysql_insert_id();
		mysql_query("insert into user_info set user_id='".$last_id."'") or die (mysql_error());
		$_SESSION['last_id']= $last_id; 
		
		$asd 	= "select * from user where user_id = $last_id";
		$Signin	= mysql_fetch_array(mysql_query($asd));
		
		$_SESSION['userid']   = $Signin['user_id'];
		$_SESSION['username'] = $Signin['user_name'];
		
		$words 						= explode(' ', trim($Signin['user_name']));
		$_SESSION['usernamechat']	= $words[0];
		
		$_SESSION['SESS_email'] 	= $Signin['user_email'];
		
		$lastlog = mysql_query("insert into user_lastlogin set user_id = '".$_SESSION['userid']."' , lastlogin = '$sdate' , ipaddress = '".$_SERVER['REMOTE_ADDR']."' , online_status = '1' ");
		//mailing

//Sent mail to registered member for confirmation and login details		
		$to 	 = $_SESSION['SESS_email'];
		$subject = 'LogIn Information';
		
		// message
		$message = '
		<html>

Não entendo porque continue dando o erro (Duplicate entry 'fulano@gmail.com' for key 'user_email')...

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • andersongarcia essa verificação voce tem que fazer antes de realizar o insert no banco de dados:

 

Da uma olhada no código abaixo:

 

 

<?php 
include("config/db_connect.php");


if(isset($_POST['sub']))
{
$cap = 'notEq';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($_POST['captcha'] == $_SESSION['cap_code']) {
    // Captcha verification is Correct. Do something here!


// Member Registration code
$today = date('d/m/Y');
$sdate = date('d-m-Y h:i:s A');


$user_birthdate = $_POST['days'].'-'.$_POST['months'].'-'.$_POST['years'];
$age = Age($user_birthdate);
$password = base64_encode($_POST['password']);


   if (isset($_POST['email1']) && !($_POST['email1']=="")){
  
   $email = $_POST['email1'];
   $verifica_email = mysql_query("select email from user where email='$email1'")or die(mysql_error());
   $count = mysql_num_rows($verifica_email);


   if($count > 0){
      echo 'Usuario ja cadastrado com esse e-mail.';
   }else{


$insert = mysql_query ( " insert into user set user_name = '".$_POST['uname']."' , 
age = '".$age."' , 
user_password = '".$password."' , 
user_birthdate = '".$user_birthdate."' , 
user_gender = '".$_POST['gender']."' , 
user_country = '".$_POST['country']."' , 
user_ethnicity = '".$_POST['ethnicity']."' , 
user_email = '".$_POST['email1']."' , 
reg_date = '$today' , 
status ='1' " ) or die(mysql_error());




if($insert)
{
$last_id = mysql_insert_id();
mysql_query("insert into user_info set user_id='".$last_id."'") or die (mysql_error());
$_SESSION['last_id']= $last_id; 


$asd = "select * from user where user_id = $last_id";
$Signin = mysql_fetch_array(mysql_query($asd));


$_SESSION['userid']   = $Signin['user_id'];
$_SESSION['username'] = $Signin['user_name'];


$words = explode(' ', trim($Signin['user_name']));
$_SESSION['usernamechat'] = $words[0];


$_SESSION['SESS_email'] = $Signin['user_email'];


$lastlog = mysql_query("insert into user_lastlogin set user_id = '".$_SESSION['userid']."' , lastlogin = '$sdate' , ipaddress = '".$_SERVER['REMOTE_ADDR']."' , online_status = '1' ");
//mailing


//Sent mail to registered member for confirmation and login details
$to = $_SESSION['SESS_email'];
$subject = 'LogIn Information';


// message
$message = '<html>';


   }
}else{
echo 'O campo email nao deve estar vazio';
}


}


?>

 

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.