Vous êtes sur la page 1sur 6

ltima: Curso de PHP y MySQL 20: Iniciar Sesin, Cerrar Sesin y Privilegios

Cdigos de Programacin
Un sitio web que te ayuda a aprender los diferentes lenguajes de programacin con cursos y tutoriales.

INICIO NOTICIAS TUTORIALES


PROGRAMACIN BASES DE DATOS

LINUX

Suscribirse es Gratis!!!

Cdigos de Programacin

YouTube

Uncategorized

Curso de PHP y MySQL 21: Recuperar


Contrasea por Email Buscar
2 Marzo, 2017

Este es el capitulo 21 del Curso de PHP y MySQL. En este capitulodesarrollaremos la


Curso GRATIS de MySQL
pantalla para recuperar contrasea por correo electrnicode nuestro Sistema de
Usuarios en PHP y MySQL.

Requisitos:
Servidor Web, PHP (5.5 o superior) y MySQL. Ver Capitulo 1
Capitulo 20: Registro de usuarios

Capitulo 21: Login, logout y Privilegios


Capitulo 21: Login, logout y Privilegios
Librera: PHPMailer
Bootstrap

Sguenos en Facebook

Cdigos de Programacin

En la descarga al final del post incluimos los formularios con libreras, hojas de estilo,
javascripts y archivo sql con la base de datos, la estructura de carpetas es la
Categoras
siguiente:

Bases de Datos

Java

Linux

MySQL

Noticias

PHP
Iniciamos con la pantalla de recuperacin de contrasea, recupera.php Programacin

1 <?php Trucos
2 require 'funcs/conexion.php';
3 include 'funcs/funcs.php'; Tutoriales
4
5 session_start(); Ubuntu
6
7 if(isset($_SESSION["id_usuario"])){ Uncategorized
8 header("Location: welcome.php");
9 }
10
11 $errors = array();
12
13 if(!empty($_POST))
14 {
15 $email = $mysqli->real_escape_string($_POST['email']);
16
17 if(!isEmail($email))
18 {
19 $errors[] = "Debe ingresar un correo electronico valido";
20 }
21
22 if(emailExiste($email))
23 {
24 $user_id = getValor('id', 'correo', $email);
25 $nombre = getValor('nombre', 'correo', $email);
26
27 $token = generaTokenPass($user_id);
28
29 $url = 'http://'.$_SERVER["SERVER_NAME"].'/login/cambia_pass.php?user_id='.
30
31 $asunto = 'Recuperar Password - Sistema de Usuarios';
32 $cuerpo = "Hola $nombre: <br /><br />Se ha solicitado un reinicio de contrase&ntilde;a. <br/><br/>Para restaurar la contrase
33
34 if(enviarEmail($email, $nombre, $asunto, $cuerpo)){
35 echo "Hemos enviado un correo electronico a las direcion $email para restablecer tu password.<br />"
36 echo "<a href='index.php' >Iniciar Sesion</a>";
37 exit;
38 }
39 } else {
40 $errors[] = "La direccion de correo electronico no existe";
41 }
42 }
43 ?>
44 <html>
45 <head>
46 <title>Recuperar Password</title>
47
48 <link rel="stylesheet" href="css/bootstrap.min.css" >
49 <link rel="stylesheet" href="css/bootstrap-theme.min.css" >
50 <script src="js/bootstrap.min.js" ></script>
51 </head>
52
53 <body>
54
55 <div class="container">
56 <div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2"
57 <div class="panel panel-info" >
58 <div class="panel-heading">
59 <div class="panel-title">Recuperar Password</div>
60 <div style="float:right; font-size: 80%; position: relative; top:-10px"
61 </div>
62
63 <div style="padding-top:30px" class="panel-body" >
64
65 <div style="display:none" id="login-alert" class="alert alert-danger col-sm-12"
66
67 <form id="loginform" class="form-horizontal" role="form" action
68
69 <div style="margin-bottom: 25px" class="input-group">
70 <span class="input-group-addon"><i class="glyphicon glyphicon-user"
71 <input id="email" type="email" class="form-control" name
72 </div>
73
74 <div style="margin-top:10px" class="form-group">
75 <div class="col-sm-12 controls">
76 <button id="btn-login" type="submit" class="btn btn-success"
77 </div>
78 </div>
79
80 <div class="form-group">
81 <div class="col-md-12 control">
82 <div style="border-top: 1px solid#888; padding-top:15px; font-size:85%"
83 No tiene una cuenta! <a href="registro.php">Registrate
84 </div>
85 </div>
86 </div>
87 </form>
88 <?php echo resultBlock($errors); ?>
89 </div>
90 </div>
91 </div>
92 </div>
93 </body>
94 </html>

Aqu tambin es necesario verificar la configuracin del envo de correo electrnico


para que podamosenviar los datos para recuperacin de contrasea.
Ahora creamos el script que enviamos en la url del correo
electrnico,cambia_pass.php

1 <?php
2 require 'funcs/conexion.php';
3 include 'funcs/funcs.php';
4 session_start();
5
6 if(empty($_GET['user_id'])){
7 header('Location: index.php');
8 }
9
10 if(empty($_GET['token'])){
11 header('Location: index.php');
12 }
13
14 $user_id = $mysqli->real_escape_string($_GET['user_id']);
15 $token = $mysqli->real_escape_string($_GET['token']);
16
17 if(!verificaTokenPass($user_id, $token))
18 {
19 echo 'No se pudo verificar los Datos';
20 exit;
21 }
22 ?>
23 <html>
24 <head>
25 <title>Cambiar Password</title>
26
27 <link rel="stylesheet" href="css/bootstrap.min.css" >
28 <link rel="stylesheet" href="css/bootstrap-theme.min.css" >
29 <script src="js/bootstrap.min.js" ></script>
30
31 </head>
32
33 <body>
34
35 <div class="container">
36 <div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2"
37 <div class="panel panel-info" >
38 <div class="panel-heading">
39 <div class="panel-title">Cambiar Password</div>
40 <div style="float:right; font-size: 80%; position: relative; top:-10px"
41 </div>
42
43 <div style="padding-top:30px" class="panel-body" >
44
45 <form id="loginform" class="form-horizontal" role="form" action
46
47 <input type="hidden" id="user_id" name="user_id" value ="<?php
48
49 <input type="hidden" id="token" name="token" value ="<?php
50
51 <div class="form-group">
52 <label for="password" class="col-md-3 control-label">Nuevo
53 <div class="col-md-9">
54 <input type="password" class="form-control" name="password"
55 </div>
56 </div>
57
58 <div class="form-group">
59 <label for="con_password" class="col-md-3 control-label"
60 <div class="col-md-9">
61 <input type="password" class="form-control" name="con_password"
62 </div>
63 </div>
64
65 <div style="margin-top:10px" class="form-group">
66 <div class="col-sm-12 controls">
67 <button id="btn-login" type="submit" class="btn btn-success"
68 </div>
69 </div>
70 </form>
71 </div>
72 </div>
73 </div>
74 </div>
75 </body>
76 </html>

Verificamos si los datos que esta proporcionado en la url son validos y mostramos el
formulario para agregar un nuevo password, en caso de que los datos no sean
validos no muestra el formulario.

El formulario para cambiar el password se enva al script guarda_pass.php

1 <?php
2 require 'funcs/conexion.php';
3 include 'funcs/funcs.php';
4
5 $user_id = $mysqli->real_escape_string($_POST['user_id']);
6 $token = $mysqli->real_escape_string($_POST['token']);
7 $password = $mysqli->real_escape_string($_POST['password']);
8 $con_password = $mysqli->real_escape_string($_POST['con_password']);
9
10 if(validaPassword($password, $con_password))
11 {
12
13 $pass_hash = hashPassword($password);
14
15 if(cambiaPassword($pass_hash, $user_id, $token))
16 {
17 echo "Contrase&ntilde;a Modificada <br> <a href='index.php' >Iniciar Sesion</a>"
18 }
19 else
20 {
21 echo "Error al modificar contrase&ntilde;a";
22 }
23 }
24 else
25 {
26 echo 'Las contraseas no coinciden';
27 }
28 ?>

Con esto cambiamos nuestra contrasea para iniciar sesin correctamente.

Descargar Cdigo y Base de Datos


Recuerda suscribirte a nuestro canal de YouTube, Es
Gratis!!!
Tutorial en Vdeo:

21. Sistema de Usuarios en PHP y MySQL Parte 3: Recuperar Contras...

Curso de PHP y MySQL 20: Iniciar Sesin, Cerrar Sesin y Privilegios

Copyright 2017 Cdigos de Programacin. Todos los derechos


reservados..