Hola a todos, hoy os quiero explicar como podemos hacer un login en PHP.
Como ya vimos en otro manual como crear usuarios con password hasheada o encriptada. Lo puedes ver aquí:
En este manual, vamos a ver como podemos validar esa password hash con la función password_verify, donde le pasamos el password que queremos comprobar y el hash a comprobar.
Vamos a crear un formulario de login:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Login</title> </head> <body> <form action="login.php" method="post"> <label for="username">Username</label> <input type="text" name="username" id="username"> <label for="password">Password</label> <input type="password" name="password" id="password"> <input type="submit" value="Login"> </form> </body> </html>
Lo primero que haremos es obtener el hash del usuario concreto y comparar el password que hemos puesto en el formulario con el que tiene el usuario, esto lo haremos con password_verify.
<?php require_once 'conexion.php'; session_start(); $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * "; $sql .= "FROM login "; $sql .= "WHERE username = '". $username ."'"; $resultados = $conexion->query($sql); $fila = mysqli_fetch_assoc($resultados); $passwordHash = $fila['password']; if(password_verify($password, $passwordHash)){ $_SESSION['logueado'] = true; header("Location: logged-area.php"); }else{ $_SESSION['logueado'] = false; header("Location: index.php"); } ?>
Con la session, sabremos si esta o no logueado desde cualquier punto de la aplicación.
Donde queramos poner que no se pueda acceder sin habernos logueado, tendremos que comprobarlo al principio:
<?php session_start(); if(!isset($_SESSION['logueado']) || !$_SESSION['logueado']){ header("Location: index.php"); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p>Usuario logueado</p> <form action="logout.php" method="post"> <input type="submit" value="Logout"> </form> </body> </html>
En el caso de que queramos hacer un logout, podemos tener un script php con el siguiente contenido:
<?php session_start(); unset($_SESSION['logueado']); header("Location: index.php"); ?>
Os dejo un video donde lo explico:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta