<?php
/*
Instituto Tecnologico de Zacatepec, Morelos
Descripcion: Este archivo permite guardar un nuevo usuario.
Author: Gonzalo Silverio gonzasilve@gmail.com
Archivo: guardarRegistro.php
*/
//Recuperar los datos del formulario de registro
$str_nombre =trim($_POST['tx_nombre']); $str_apPaterno =trim($_POST['tx_apPaterno']); $str_apMaterno =trim($_POST['tx_apMaterno']); $str_correo =trim($_POST['tx_correo']); $str_username =trim($_POST['tx_username']); $str_password =trim($_POST['tx_password']); $str_password2 =trim($_POST['tx_password2']); $i_TipoUsuario =trim($_POST['i_tipoUsuario']);
//Devuelve true si la cadena que llega esta VACIA
function estaEnBlanco($cadena) {
return true;
return false;
}
//Devuelve true si la longitud de la cadena (primer parametro)
// que llega es menor que el numero (segundo parametro)
function validaTamanio($cadena,$longitud) {
return true;
return false;
}
// devuelve true SI ha escrito, un email NO VALIDO
function esCorreoInvalido($str_email) {
return true;
return false;
}
// devuelve una cadena escapada de algunos caracteres que
// pudieran servir para un ataque de sql injection
function escaparQuery($cadena) {
$str_KeywordsSQL = array("select ","insert ","delete ","update ","union "); $str_OperadoresSQL = array("like ","and ","or ","not ","<",">","<>","=","<"); $str_DelimitadoresSQL = array(";","(",")","'");
//Quitar palabras reservadas y operadores
for($i=0; $i<count($str_KeywordsSQL); $i++) {
}
for($i=0; $i<count($str_OperadoresSQL); $i++) {
}
for($i=0; $i<count($str_DelimitadoresSQL); $i++) {
}
return $cadena;
}
$mensajesAll= "";
//Mensajes para el nombre
if( estaEnBlanco($str_nombre) )
$mensajesAll = "<li>Por favor, escriba su Nombre.</li>";
if( validaTamanio($str_nombre,3) )
$mensajesAll .= "<li>Su Nombre como minimo debe tener 3 caracteres.</li>";
//Mensajes para el Apellido Paterno
if( estaEnBlanco($str_apPaterno) )
$mensajesAll .= "<li>Por favor, escriba su Apellido Paterno.</li>";
if( validaTamanio($str_apPaterno,3) )
$mensajesAll .= "<li>Su Apellido Paterno como minimo debe tener 3 caracteres.</li>";
//Mensajes para el Apellido Materno
if( estaEnBlanco($str_apMaterno) )
$mensajesAll .= "<li>Por favor, escriba su Apellido Materno.</li>";
if( validaTamanio($str_apMaterno,3) )
$mensajesAll .= "<li>Su Apellido Materno como minimo debe tener 3 caracteres.</li>";
//Mensajes para el Correo electronico
if( estaEnBlanco($str_correo) || validaTamanio($str_correo,5) || esCorreoInvalido($str_correo) )
$mensajesAll .= "<li>Por favor, escriba una direccion de correo electronico valida.</li>";
//Mensajes para el nombre de usuario
if( estaEnBlanco($str_username) )
$mensajesAll .= "<li>Por favor, escriba un nombre de usuario. Este dato le servira para iniciar sesion y ver el contenido.</li>";
if( validaTamanio($str_username,5) )
$mensajesAll .= "<li>Su nombre de usuario como minimo debe tener 5 caracteres.</li>";
//Mensajes para el password
if( estaEnBlanco($str_password) )
$mensajesAll .= "<li>Por favor, escriba una contraseña.</li>";
if( validaTamanio($str_password,5) )
$mensajesAll .= "<li>Su contraseña como minimo debe tener 5 caracteres.</li>";
//Mensajes para la confirmacion del password
if( estaEnBlanco($str_password2) || validaTamanio($str_password2,5) )
$mensajesAll .= "<li>Por favor, confirme la contraseña anterior.</li>";
if( trim($str_password) != trim($str_password2) ) $mensajesAll .= "<li>Por favor, repita la contraseña anterior.</li>";
//Mensajes para el tipo de usuario
if( estaEnBlanco($i_TipoUsuario) )
$mensajesAll .= "<li>Por favor, indique el tipo de usuaurio.</li>";
$log = $mensajesAll."<br>";
//Si se generaron mensajes de error al validar...
if ( trim($mensajesAll) != "" ) { //..Redireccion a la pagina de registro para mostrar msg de error al usuario
//Enviar los datos que habia escrito antes de enviar
?>
<form id="frm_error" name="frm_error" method="post" action="registro.php">
<input type="hidden" name="error" value="1" />
<input type="hidden" name="msgs_error" value='<?php echo $mensajesAll ?>' />
<input type="hidden" name="str_nombre" value='<?php echo $str_nombre ?>' />
<input type="hidden" name="str_apPaterno" value='<?php echo $str_apPaterno ?>' />
<input type="hidden" name="str_apMaterno" value='<?php echo $str_apMaterno ?>' />
<input type="hidden" name="str_correo" value='<?php echo $str_correo ?>' />
<input type="hidden" name="str_username" value='<?php echo $str_username ?>' />
<input type="hidden" name="str_password" value='<?php echo $str_password ?>' />
<input type="hidden" name="str_password2" value='<?php echo $str_password2 ?>' />
</form>
<script type="text/javascript">
//Redireccionar con el formulario creado
document.frm_error.submit();
</script>
<?php
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.:: Registrar Usuario ::. </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="estilos.css" type="text/css">
<script src="jquery171.js" type="text/javascript"></script>
<script src="jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript" src="jquery.alerts.js"></script>
<link href="jquery.alerts.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
<!--
$().ready(function() {
});
// -->
</script>
</head>
<body>
<?php
$mensajesAll = "";
$username_duplicado = false;
$email_duplicado = false;
//Escapar las cadenas para avitar SQL Injection
$str_username = escaparQuery($str_username);
$str_correo = escaparQuery($str_correo);
//Conectar la BD
include("conectar_bd.php");
conectar_bd();
//Validar que el nombre de usuario no exista en la BD
$sql = "SELECT id_usuario FROM tbl_users
WHERE tx_username = '".trim($str_username)."';"; $log .= $sql."<br>";
//Si ya existe el usuario en la BD...
$mensajesAll = "<li>El nombre de usuario <b>".$str_username."</b> ya fue registrado
por otra persona. Por favor, escriba otro.</li>";
$username_duplicado = true;
}
//Validar que el email no exista en la BD
$sql = "SELECT id_usuario FROM tbl_users
WHERE tx_correo='".$str_correo."';";
$log .= $sql."<br>";
//Si ya existe el email en la BD...
$mensajesAll = "<li>El correo electronico <b>".$str_correo."</b> ya fue registrado
por otra persona. Por favor, escriba otro.</li>";
$email_duplicado = true;
}
//Si ambos datos ya estan en la Base de datos mostrar un solo msg
if( $username_duplicado && $email_duplicado)
$mensajesAll = "<li>Ambos, nombre de usuario <b>".$str_username."</b>
y correo electronico <b>".$str_correo."</b> ya fueron registrados por otra persona.
Por favor, cambie esos datos.</li>";
//..Redireccion a la pagina de registro para mostrar msg de error al usuario
//Enviar los datos que habia escrito antes de enviar
$log .= $mensajesAll."<br>";
if ( trim($mensajesAll) != "" ) { //..Redireccion a la pagina de registro para mostrar msg de error al usuario
//Enviar los datos que habia escrito antes de enviar
?>
<form id="frm_error" name="frm_error" method="post" action="registro.php">
<input type="hidden" name="error" value="2" />
<input type="hidden" name="msgs_error" value='<?php echo $mensajesAll ?>' />
<input type="hidden" name="str_nombre" value='<?php echo $str_nombre ?>' />
<input type="hidden" name="str_apPaterno" value='<?php echo $str_apPaterno ?>' />
<input type="hidden" name="str_apMaterno" value='<?php echo $str_apMaterno ?>' />
<input type="hidden" name="str_correo" value='<?php echo $str_correo ?>' />
<input type="hidden" name="str_username" value='<?php echo $str_username ?>' />
<input type="hidden" name="str_password" value='<?php echo $str_password ?>' />
<input type="hidden" name="str_password2" value='<?php echo $str_password2 ?>' />
</form>
<script type="text/javascript">
//Redireccionar con el formulario creado
document.frm_error.submit();
</script>
<?php
}
//..Si llega asta aqui es que todos los datos son validos, procedemos a darlo de alta en BD
$str_elNombre = $str_nombre." ".$str_apPaterno;
$str_elNombreCompleto = $str_nombre." ".$str_apPaterno." ".$str_apMaterno;
//Formar el query para el insert del nuevo usuario
$queryInsert="INSERT INTO tbl_users (
tx_nombre,
tx_apellidoPaterno,
tx_apellidoMaterno,
tx_correo,
tx_username,
tx_password,
id_TipoUsuario,
dt_registro )
VALUES(
'".$str_nombre."',
'".$str_apPaterno."',
'".$str_apMaterno."',
'".$str_correo."',
'".$str_username."',
'".md5($str_password)."', ".$i_TipoUsuario.",
'".date("Y-m-d H:i:s")."');";
$log .= $queryInsert."<br>";
//echo $log;
//exit;
// Le Envio un correo electronico de bienvenida
$destinatario = $str_correo; //A quien se envia
$nomAdmin = 'Jose numis'; //Quien envia
$mailAdmin = 'bgnumis@gmail.com'; //Mail de quien envia
$urlAccessLogin = 'http://localhost/autenticar_usuarios'; //Url de la pantalla de login
$elmensaje = "";
$asunto = $str_elNombre.", Gracias por registrarte!";
$cuerpomsg ='
<h2>.::Registrar usuarios::.</h2>
<p>Le damos la mas cordial bienvenida, desde ahora usted podra gozar de los beneficios de
haberse identificado y acceder a contenido exclusivo de esta comunidad.</p>
<table border="0" >
<tr>
<td colspan="2" align="center" >Sus datos de acceso para <a href="'.$urlAccessLogin.'">'.$urlAccessLogin.'</a><br></td>
</tr>
<tr>
<td> Nombre </td>
<td> <b>'.$str_elNombreCompleto.'</b> </td>
</tr>
<tr>
<td> Nombre de usuario </td>
<td> <b>'.$str_username.'</b> </td>
</tr>
<tr>
<td> Password </td>
<td> <b>'.$str_password.'</b> </td>
</tr>
</table> <br/><br/>
<p><b>Gracias por su preferencia, hasta pronto.</b></p> <br><br>';
//Establecer cabeceras para la funcion mail()
//version MIME
$cabeceras = "MIME-Version: 1.0\r\n";
//Tipo de info
$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
//direccion del remitente
$cabeceras .= "From: ".$nomAdmin." <".$mailAdmin.">";
$i_EmailEnviado = 0;
//Si se envio el email
if( mail($destinatario,$asunto,$cuerpomsg,$cabeceras) ) $i_EmailEnviado = 1;
//Cerrrar conexion a la BD
// Mostrar resultado del registro
?>
<form id="frm_registro_status" name="frm_registro_status" method="post" action="index.php">
<input type="hidden" name="status_registro" value="1" />
<input type="hidden" name="i_EmailEnviado" value='<?php echo $i_EmailEnviado ?>' />
</form>
<script type="text/javascript">
//Redireccionar con el formulario creado
document.frm_registro_status.submit();
</script>
</body>
</html>