Return to Snippet

Revision: 41626
at February 21, 2011 19:48 by danideu


Initial Code
<?php

//FUNCION PARA INSERTAR EL REGISTRO EN LA TABLA users_temp
function insertarReg($name_, $username_, $password1_, $email_){
		/*Teneis que declarar las variables $servidor, $usuario,$password y 
		  $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
		$servidor = "localhost";
		$usuario = "root";
		$password = "";
		$sdb = "prueba1";
		
		$ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error()); 
		mysql_select_db($sdb,$ilink3); 
		
		$inserta= "insert into users_temp (nombre,usersTemp,password,email,fecAlta) values ('$name_','$username_','$password1_','$email_',CURDATE())";
		$resultado3=mysql_query($inserta,$ilink3) or die (mysql_error());
		
		if (!$resultado3)
    	return false;
		else
			return true;	
}

/*function validateName($name){
	//NO cumple longitud minima
	if(strlen($name) < 5)
		return false;
	//SI longitud pero NO solo caracteres A-z
	else if(!preg_match("/^[a-zA-Z]+$/", $name))
		return false;
	// SI longitud, SI caracteres A-z
	else
		return true;
}*/

function validateName($name){
$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
	$caracter1KO = 0;
	if(strlen($name) < 5):
		return false;
	else:
	for ($i=0; $i<strlen($name); $i++){ 
	      if (strpos($permitidos, substr($name,$i,1))===false){ 
	         $caracter1KO = 1;
	 			} 
	}
	endif;
	if ($caracter1KO == 1 || strlen($name) <= 4):
		return false;
	else:
		return true;
	endif;
}

function validateUsername($username){
	$permitidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_";
	$caracterKO = 0;
	if(strlen($username) < 5):
		return false;
	else:
	for ($i=0; $i<strlen($username); $i++){ 
	      if (strpos($permitidos, substr($username,$i,1))===false){ 
	         $caracterKO = 1;
	 			} 
	}
	endif;
	if ($caracterKO == 1 || strlen($username) <= 4):
		return false;
	else:
		return true;
	endif;
}


function validateExistUsername($username){
		/*Teneis que declarar las variables $servidor, $usuario,$password y 
		  $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
		$servidor = "localhost";
		$usuario = "root";
		$password = "";
		$sdb = "prueba1";
		
		$ilink=mysql_connect($servidor,$usuario,$password) or die(mysql_error()); 

		mysql_select_db($sdb,$ilink); 
		$consulta= "select usersTemp from users_temp where usersTemp = '$username'";
		$resultado=mysql_query($consulta,$ilink) or die (mysql_error());
		if (mysql_num_rows($resultado)>0)
			return false;
		else
			return true;
}

function validatePassword1($password1){
	//NO tiene minimo de 5 caracteres o mas de 12 caracteres
	if(strlen($password1) < 5 || strlen($password1) > 12)
		return false;
	// SI longitud, NO VALIDO numeros y letras
	else if(!preg_match("/^[0-9a-zA-Z]+$/", $password1))
		return false;
	// SI rellenado, SI email valido
	else
		return true;
}

function validatePassword2($password1, $password2){
	//NO coinciden
	if($password1 != $password2)
		return false;
	else
		return true;
}

function validateEmail($email){
	
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
      	 if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) { 
         	 //miro si tiene caracter . 
         	 if (substr_count($email,".")>= 1){ 
            	 //obtengo la terminacion del dominio 
            	 $term_dom = substr(strrchr ($email, '.'),1); 
            	 //compruebo que la terminación del dominio sea correcta 
            	 if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){ 
               	 //compruebo que lo de antes del dominio sea correcto 
               	 $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1); 
               	 $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1); 
               	 if ($caracter_ult != "@" && $caracter_ult != "."){ 
                  	 $mail_correcto = 1; 
               	 } 
            	 } 
         	 } 
      	 } 
   	} 
   	if ($mail_correcto) 
      	 return true; 
   	else 
      	 return false; 
} 

function validateExistMail($mail){
		/*Teneis que declarar las variables $servidor, $usuario,$password y 
		  $sdb (base de datos). En mi caso para Localhost tengo lo siguiente:*/
		$servidor = "localhost";
		$usuario = "root";
		$password = "";
		$sdb = "prueba1";
		
		$ilink2=mysql_connect($servidor,$usuario,$password) or die(mysql_error()); 
		mysql_select_db($sdb,$ilink2); 
		$consulta2= "select id_usersTemp from users_temp where email = '$mail'";
		$resultado2=mysql_query($consulta2,$ilink2) or die (mysql_error());
		if (mysql_num_rows($resultado2)>0)
			return false;
		else
			return true;
}


//Comprobacion de datos
//variables valores por defecto
$name = "";
$nameValue = "";
$username = "";
$usernameValue = "";
$password1 = "";
$password2 = "";
$passwordValue = "";
$email1 = "";
$emailValue = "";
$existusername = "";
$existEmail = "";

//Validacion de datos enviados
if(isset($_POST['send'])){
	if(!validateName($_POST['name']))
		$name = "error";
	if(!validateUsername($_POST['username']))
		$username = "error";
	if(!validateExistUsername($_POST['username']))
		$existusername = "error";
	if(!validatePassword1($_POST['password1']))
		$password1 = "error";
	if(!validatePassword2($_POST['password1'], $_POST['password2']))
		$password2 = "error";
	if(!validateEmail($_POST['email']))
		$email1 = "error";
	if(!validateExistMail($_POST['email']))
		$existEmail = "error";
	//Guardamos valores para que no tenga que reescribirlos
	$nameValue = $_POST['name'];
	$usernameValue = $_POST['username'];
	$emailValue = $_POST['email'];
	$passwordValue = $_POST['password2'];
	
	
	//Comprobamos si todo ha ido bien
	if($name != "error" && $username != "error" && $password1 != "error" && $password2 != "error" && $email1 != "error"){	
		if($existusername == "error"){
			$existeU = 1;	
		}
		if($existEmail == "error"){
			$existeE = 1;	
		}
		if (!$existeU && !$existeE){
			$status = 1;
		}
	}
		
		
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="es-ES">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Formulario de registro utilizando PHP y Javascript (jQuery) para validar | COLORATE</title>
	<link rel="stylesheet" href="main.css" type="text/css" media="screen" />
</head>
<body>
	<div class="wrapper">	
		<div class="section">
			<?php if(!isset($status)): ?>
			
			<h1>Formulario de Registro</h1>
			
			<form id="form1" action="formulario_2.php" method="post">
				<label for="name">Nombre <?php if ($name == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>A-z, mínimo 5 caracteres</span></label>
				<input tabindex="1" name="name" id="name" type="text" class="text <?php echo $name ?>" value="<?php echo $nameValue ?>" />
				
				<label for="username">Nombre de usuario 
					<?php 
						if ($username == "error" || $existusername == "error"): 
							if ($existusername == "error"):
								echo "<span style=color:red>El usuario " . $usernameValue . " ya existe"; 
							else:
								echo "<span style=color:red>Caracteres de A-z, mínimo 5 caracteres (No números)";
							endif; 
						else: 
							echo "<span style=color:green>Caracteres de A-z, mínimo 5 caracteres (No números)</span>"; 
						endif; ?>
				</label>
		
				<input tabindex="2" name="username" id="username" type="text" class="text <?php if ($existeU == 1):	echo $existusername; else: echo $username; endif;?>" value="<?php echo $usernameValue;?>" />
				
				<label for="password1">Contraseña <?php if ($password1 == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>Mínimo 5 caracteres, máximo 12 caracteres, letras y números</span></label>
				<input tabindex="3" name="password1" id="password1" type="password" class="text <?php echo $password1 ?>" value="" />
				
				<label for="password2">Repetir Contraseña <?php if ($password2 == "error"): echo "<span style=color:red>"; else: echo "<span style=color:green>"; endif; ?>Debe ser igual a la anterior</span></label>
				<input tabindex="4" name="password2" id="password2" type="password" class="text <?php echo $password2 ?>" value="" />
				
				<label for="email">Email <span>
					<?php 
						if ($email1 == "error" || $existEmail == "error"): 
							if ($existEmail == "error"):
								echo "<span style=color:red>El email " . $emailValue . " ya existe"; 
							else:
								echo "<span style=color:red>Escribe un email válido por favor";
							endif; 
						else:
							echo "<span style=color:green>Escribe un email válido por favor</span>";
						endif; ?>
				</label>
				<input tabindex="5" name="email" id="email" type="text" class="text <?php echo $email1 ?>" value="<?php echo $emailValue ?>" />
				<div>
					<input tabindex="6" name="send" id="send" type="submit" class="submit" value="Enviar formulario" />
				</div>
			</form>
			
			<?php else: ?>
				<?php 
					if(insertarReg($nameValue, $usernameValue, $passwordValue, $emailValue)):?>
						<h1>Registro introducido correctamente en la base de datos</h1>
						
						<div class="respuesta_insert">
						<p>Gracias por registrarte en COLORATE.</p>
						<p>Te hemos mandado un mail a <span style="color:green"><?php echo $emailValue; ?></span> para que confirmes el alta. Si no lo recibes comprueba la bandeja de correo no deseado</p>
						<p>Gracias!</p>
						<p>Administrador Colorate</p>
						<p>Tutorial "Registro de Usuarios en PHP y MySql con validación y activación por mail".</p>
						</div>
				<?php else: ?>
						<?php if ($respuesta == 1) ?>
						<h1 style="font-color: red">No se ha podido insertar el registro en nuestra base de datos</h1>
				<!--<h1>¡Formulario enviado con éxito!</h1>-->
				<?php endif; ?>
			<?php endif; ?>
		</div>
	</div>
</body>
</html>

Initial URL
http://www.colordeu.es/BLOG/registros-de-usuarios-en-php-y-mysql-con-validacion-de-campos-y-activacion-por-mail-56

Initial Description
Registro de usuario en PHP con validación y activación por mail

Initial Title
REGISTRAR USUARIOS EN PHP CON VALIDACION DE DATOS Y ACTIVACIÓN POR MAIL - 5

Initial Tags
mysql, php

Initial Language
PHP