Está en la página 1de 6

-- Base de datos: `login`

--
CREATE DATABASE IF NOT EXISTS `login` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `login`;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `tipo_usuario`
--

CREATE TABLE IF NOT EXISTS `tipo_usuario` (


`id` int(11) NOT NULL,
`tipo` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (


`id` int(11) NOT NULL,
`usuario` varchar(30) NOT NULL,
`password` varchar(130) NOT NULL,
`nombre` varchar(100) NOT NULL,
`correo` varchar(80) NOT NULL,
`last_session` datetime DEFAULT NULL,
`activacion` int(11) NOT NULL DEFAULT '0',
`token` varchar(40) NOT NULL,
`token_password` varchar(100) DEFAULT NULL,
`password_request` int(11) DEFAULT '0',
`id_tipo` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indices de la tabla `tipo_usuario`
--
ALTER TABLE `tipo_usuario`
ADD PRIMARY KEY (`id`);

--
-- Indices de la tabla `usuarios`
--
ALTER TABLE `usuarios`
ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT de la tabla `tipo_usuario`
--
ALTER TABLE `tipo_usuario`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT de la tabla `usuarios`
--
ALTER TABLE `usuarios`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Ahora en la carpeta de funcs editamos el script conexion.php con nuestros datos de conexin a
MySQL (Mas informacin):
<?php
1
$mysqli=new mysqli("localhost","root","password","login"); //servidor, usuario de base de datos, contrasea
2
del usuario, nombre de base de datos
3
4
if(mysqli_connect_errno()){
5
echo 'Conexion Fallida : ', mysqli_connect_error();
6
exit();
7
}
8
?>
Tambin editaremos el script de funcs.php que esta en la carpeta de funcs, en este script solo
modificaremos los valores de la funcin envialEmail() con nuestros datos del correo
electrnico desde donde enviaremos los email para activacin y recuperacin de contrasea
(Mas informacin):

1 function enviarEmail($email, $nombre, $asunto, $cuerpo){


2
3 require_once 'PHPMailer/PHPMailerAutoload.php';
4
5 $mail = new PHPMailer();
6 $mail->isSMTP();
7 $mail->SMTPAuth = true;
8 $mail->SMTPSecure = 'tipo de seguridad'; //Modificar
9 $mail->Host = 'dominio'; //Modificar
10 $mail->Port = puerto; //Modificar
11
12 $mail->Username = 'correo emisor'; //Modificar
13 $mail->Password = 'password de correo emisor'; //Modificar
14
15 $mail->setFrom('correo emisor', 'nombre de correo emisor'); //Modificar
16 $mail->addAddress($email, $nombre);
17
18 $mail->Subject = $asunto;
19 $mail->Body = $cuerpo;
20 $mail->IsHTML(true);
21
22 if($mail->send())
23 return true;
24 else
25 return false;
26 }
El siguiente paso es realizar la accin de registro de usuario la cual tendr diferentes
validaciones del lado de cliente y del servidor:
1 <?php
2 require 'funcs/conexion.php';
3 include 'funcs/funcs.php';
4
5 $errors = array();
6
7 if(!empty($_POST))
8 {
9 $nombre = $mysqli->real_escape_string($_POST['nombre']);
10 $usuario = $mysqli->real_escape_string($_POST['usuario']);
11 $password = $mysqli->real_escape_string($_POST['password']);
12 $con_password = $mysqli->real_escape_string($_POST['con_password']);
13 $email = $mysqli->real_escape_string($_POST['email']);
14 $captcha = $mysqli->real_escape_string($_POST['g-recaptcha-response']);
15 $activo = 0;
16 $tipo_usuario = 2;
17 $secret = 'clave secreta de reCaptcha';//Modificar
18
19 if(!$captcha){
20 $errors[] = "Por favor verifica el captcha";
21 }
22
23 if(isNull($nombre, $usuario, $password, $con_password, $email))
24 {
25 $errors[] = "Debe llenar todos los campos";
26 }
27
28 if(!isEmail($email))
29 {
30 $errors[] = "Direccin de correo invlida";
31 }
32
33 if(!validaPassword($password, $con_password))
34 {
35 $errors[] = "Las contraseas no coinciden";
36 }
37
38 if(usuarioExiste($usuario))
39 {
40 $errors[] = "El nombre de usuario $usuario ya existe";
41 }
42
43 if(emailExiste($email))
44 {
45 $errors[] = "El correo electronico $email ya existe";
46 }
47
48 if(count($errors) == 0)
49 {
50
51 $response =
52 file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$captcha");
53
54 $arr = json_decode($response, TRUE);
55
56 if($arr['success'])
57 {
58
59 $pass_hash = hashPassword($password);
60 $token = generateToken();
61
62 $registro = registraUsuario($usuario, $pass_hash, $nombre, $email, $activo,
63 $token, $tipo_usuario);
64 if($registro > 0)
65 {
66 $url =
67 'http://'.$_SERVER["SERVER_NAME"].'/login/activar.php?id='.$registro.'&val='.$token;
68
69 $asunto = 'Activar Cuenta - Sistema de Usuarios';
70 $cuerpo = "Estimado $nombre: <br /><br />Para continuar con el
71 proceso de registro, es indispensable de click en la siguiente liga <a href='$url'>Activar Cuenta</a>";
72
73 if(enviarEmail($email, $nombre, $asunto, $cuerpo)){
74
75 echo "Para terminar el proceso de registro siga las
76 instrucciones que le hemos enviado la direccion de correo electronico: $email";
77 echo "<br><a href='index.php' >Iniciar Sesion</a>";
78 exit;
79 } else {
80 $erros[] = "Error al enviar Email";
81 }
82
83 } else {
84 $errors[] = "Error al Registrar";
85 }
86
87 } else {
88 $errors[] = 'Error al comprobar Captcha';
89 }
90 }
91 }
92 ?>
93 <html>
94 <head>
95 <title>Registro</title>
96
97 <link rel="stylesheet" href="css/bootstrap.min.css" >
98 <link rel="stylesheet" href="css/bootstrap-theme.min.css" >
99 <script src="js/bootstrap.min.js" ></script>
100 <script src='https://www.google.com/recaptcha/api.js'></script>
101 </head>
102
103 <body>
104 <div class="container">
105 <div id="signupbox" style="margin-top:50px" class="mainbox col-md-6 col-md-
106 offset-3 col-sm-8 col-sm-offset-2">
107 <div class="panel panel-info">
108 <div class="panel-heading">
109 <div class="panel-title">Reg&iacute;strate</div>
110 <div style="float:right; font-size: 85%; position: relative;
111 top:-10px"><a id="signinlink" href="index.php">Iniciar Sesi&oacute;n</a></div>
112 </div>
113
114 <div class="panel-body" >
115 <form id="signupform" class="form-horizontal"
116 role="form" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" autocomplete="off">
117
118 <div id="signupalert" style="display:none"
119 class="alert alert-danger">
120 <p>Error:</p>
121 <span></span>
122 </div>
123
124 <div class="form-group">
125 <label for="nombre" class="col-md-3
126 control-label">Nombre:</label>
127 <div class="col-md-9">
128 <input type="text"
129 class="form-control" name="nombre" placeholder="Nombre" value="<?php if(isset($nombre)) echo $nombre; ?>"
130 required >
131 </div>
132 </div>
133
134 <div class="form-group">
135 <label for="usuario" class="col-md-3
136 control-label">Usuario</label>
137 <div class="col-md-9">
138 <input type="text"
139 class="form-control" name="usuario" placeholder="Usuario" value="<?php if(isset($usuario)) echo $usuario; ?>"
140 required>
141 </div>
142 </div>
143
144 <div class="form-group">
145 <label for="password" class="col-
146 md-3 control-label">Password</label>
147 <div class="col-md-9">
148 <input type="password"
149 class="form-control" name="password" placeholder="Password" required>
150 </div>
151 </div>
152
153 <div class="form-group">
154 <label for="con_password"
155 class="col-md-3 control-label">Confirmar Password</label>
156 <div class="col-md-9">
157 <input type="password"
158 class="form-control" name="con_password" placeholder="Confirmar Password" required>
159 </div>
160 </div>
161
162 <div class="form-group">
163 <label for="email" class="col-md-3
164 control-label">Email</label>
165 <div class="col-md-9">
166 <input type="email"
167 class="form-control" name="email" placeholder="Email" value="<?php if(isset($email)) echo $email; ?>"
required>
</div>
</div>

<div class="form-group">
<label for="captcha" class="col-md-3
control-label"></label>
<div class="g-recaptcha col-md-9"
data-sitekey="key de reCaptcha"></div> <!-- Modificar -->
</div>

<div class="form-group">
<div class="col-md-offset-3 col-md-
9">
<button id="btn-signup"
type="submit" class="btn btn-info"><i class="icon-hand-right"></i>Registrar</button>
</div>
</div>
</form>
<?php echo resultBlock($errors); ?>
</div>
</div>
</div>
</div>
</body>
</html>

También podría gustarte