Buenas estimados, en este tutorial vamos a aprender como crear un sistema de login con verificación de email y función de recuperar contraseña usando PHP. Se ha utilizado el enfoque de programación orientada a objetos POO y también hemos echo uso de la biblioteca PHP Mailer que es excelente para la gestión de los correos, vamos a ver el código:
Importar y ejecutar el código SQL para crear esta tabla
CREATE TABLE IF NOT EXISTS `tbl_users` ( `userID` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(100) NOT NULL, `userEmail` varchar(100) NOT NULL UNIQUE, `userPass` varchar(100) NOT NULL, `userStatus` enum('Y','N') NOT NULL DEFAULT 'N', `tokenCode` varchar(100) NOT NULL, PRIMARY KEY (`userID`) )
Luego tenemos que crear los siguientes archivos:
» dbconfig.php
» class.user.php
» index.php
» signup.php
» verify.php
» home.php
» fpass.php
» resetpass.php
» logout.php
En este archivo tenemos un código simple de conexión usando la clase Database y una función de base de datos que conecta dbConnection
<?php class Database { private $host = "localhost"; private $db_name = "test"; private $username = "root"; private $password = ""; public $conn; public function dbConnection() { $this->conn = null; try { $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password); $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $exception) { echo "Error de conexion: " . $exception->getMessage(); } return $this->conn; } } ?>
Incluir al inicio del archivo el dbconfig.php para la conexión y al final configurar PhpMailer como se muestra en este código
<?php require_once 'dbconfig.php'; class USER { private $conn; public function __construct() { $database = new Database(); $db = $database->dbConnection(); $this->conn = $db; } public function runQuery($sql) { $stmt = $this->conn->prepare($sql); return $stmt; } public function lasdID() { $stmt = $this->conn->lastInsertId(); return $stmt; } public function register($uname,$email,$upass,$code) { try { $password = md5($upass); $stmt = $this->conn->prepare("INSERT INTO tbl_users(userName,userEmail,userPass,tokenCode) VALUES(:user_name, :user_mail, :user_pass, :active_code)"); $stmt->bindparam(":user_name",$uname); $stmt->bindparam(":user_mail",$email); $stmt->bindparam(":user_pass",$password); $stmt->bindparam(":active_code",$code); $stmt->execute(); return $stmt; } catch(PDOException $ex) { echo $ex->getMessage(); } } public function login($email,$upass) { try { $stmt = $this->conn->prepare("SELECT * FROM tbl_users WHERE userEmail=:email_id"); $stmt->execute(array(":email_id"=>$email)); $userRow=$stmt->fetch(PDO::FETCH_ASSOC); if($stmt->rowCount() == 1) { if($userRow['userStatus']=="Y") { if($userRow['userPass']==md5($upass)) { $_SESSION['userSession'] = $userRow['userID']; return true; } else { header("Location: index.php?error"); exit; } } else { header("Location: index.php?inactive"); exit; } } else { header("Location: index.php?error"); exit; } } catch(PDOException $ex) { echo $ex->getMessage(); } } public function is_logged_in() { if(isset($_SESSION['userSession'])) { return true; } } public function redirect($url) { header("Location: $url"); } public function logout() { session_destroy(); $_SESSION['userSession'] = false; } function send_mail($email,$message,$subject) { require 'mailer/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(); $mail->SMTPDebug = 0; $mail->Host = "mail.tusitio.com"; $mail->Port = 25; /*25 465 587*/ $mail->SMTPAuth = true; $mail->Username = "correo@tusitio.com"; $mail->Password = "password"; $mail->setFrom('demo@tusitio.com', 'Confirmacion de miembros'); $mail->addAddress($email); $mail->Subject = $subject; $mail->MsgHTML($message); if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { } } }
Queda disponible esta demo en este Link y también se puede incluyendo el sql y todos los archivos necesarios ingresando un pequeño aporte en PayPal
• Validación de formularios usando características de HTML5
• Método para insertar registros en MySQL usando PHP
• Obtener datos desde MySQL y mostrar el resultado en una tabla
• Los colores y sus códigos RGB
• Cómo evitar los comentarios spam
• Creando un login simple con jquery, php y mysql
• Conversor de Medidas Online
• Visualizar datos en una tabla parte II: Aplicando estilo css
• Un ejemplo de ABM usando Ajax - PHP - MySQL
• Usando jquery para modificar elementos del HTML
• Usar PDO para conectarse a MYSQL
• Cómo detectar el navegador usando JavaScript
• Cómo desarmar un notebook HP Compaq Presario C700
• Proyecto Intranet: Ordenes de servicio y ventas
• Michelles Jaque
• Beatriz Cabrera Zapata
• Mini Poesías - Constanza Gonzales
• Sobre las decisiones - Constanza Gonzales
• Enviar correos usando un formulario desde sitio web o localhost con PHPMailer
• Cómo crear un cuadro de búsqueda al estilo Google
• Sistema de LogIn con verificación de email y recuperación de contraseña usando PHP
• Demostración Jquery UI Selectable usando php y bases de datos mysql
• Subir, insertar, actualizar, borrar imágenes con PHP y MySQL
• Calculadora IMC usando JavaScript
• Select Dependientes con Ajax MySQL PHP
• Expresiones regulares en PHP
• Cómo convertir datos MySQL en formato JSON en PHP
• Visualizar datos en una tabla html con mysqli
• Siembras: Aplicación en Laravel 5.5