✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Cómo crear un sistema de inicio de sesión PHP para su sitio web

705

¿Está buscando integrar un sistema de inicio de sesión en PHP? En este artículo, le muestro cómo hacer un flujo de inicio de sesión básico en PHP. Crearemos un formulario de inicio de sesión, validaremos las credenciales y redirigiremos al usuario en la página de la cuenta. También agregaría un código para cerrar la sesión del usuario. Además, mostraremos los mensajes de error si se ingresan las credenciales incorrectas.

Por el bien del tutorial, supongo que está utilizando el hash ‘md5’ para almacenar la contraseña. Escribiría el código considerando el hash md5 de una cadena. Puede que esté utilizando otro algoritmo. En ese caso, debe cambiar la consulta según su algoritmo.

Para integrar el flujo de inicio de sesión, necesitamos una tabla de base de datos que almacene los detalles del usuario. Contra esta tabla, validamos si el usuario ingresó las credenciales correctas o no. Si las credenciales de usuario son correctas, solo ellos deberían tener acceso a las páginas seguras.

En mi caso, creé una tabla de ‘usuarios’ y agregué algunas entradas ficticias. También agregué una columna de ‘estado’ que se utilizará para averiguar si una cuenta está activa o no. Esta columna tiene el tipo de datos ENUM con valores 0 y 1.

  • 1: la cuenta está activa
  • 0: la cuenta no está activa

Cómo crear un sistema de inicio de sesión PHP para su sitio web

Crear un formulario de inicio de sesión

Para comenzar, creemos un formulario de inicio de sesión donde los usuarios pueden ingresar sus credenciales. Estoy usando un marco Bootstrap para crear un formulario de inicio de sesión. Mi index.phparchivo contiene el siguiente código.

<!DOCTYPE html>
<html>
    <head>
        <title>Login Form</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h3>Login Form</h3>
                    <?php if(!empty($error_message)) { ?>
                        <div class="alert alert-danger"><?php echo $error_message; ?></div>
                    <?php } ?>
                    <form method="post">
                        <div class="form-group">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword1">Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
                        </div>
                        <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>

El código anterior mostrará el formulario de inicio de sesión como se muestra en la siguiente captura de pantalla.

Cómo crear un sistema de inicio de sesión PHP para su sitio web

He agregado la variable $error_messageen el código que imprimirá los errores de inicio de sesión.

Código PHP para validar las credenciales de los usuarios

Ya está listo con el formulario de inicio de sesión y la tabla de la base de datos. Luego, al enviar un formulario, tenemos que escribir código PHP que verifica las credenciales del usuario con los registros de la base de datos. Si los detalles son correctos, registre al usuario en el sistema y lo redireccione a la myaccount.phppágina.

Cree un config.phparchivo y agregue un código para la conexión a la base de datos.

<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
 
if ($conn->connect_errno) {
    echo "Error: ". $conn->connect_error;
}
?>

Reemplace los marcadores de posición con los valores reales.

Ahora, en el index.phparchivo antes del inicio de la etiqueta html, agregue el siguiente código.

<?php
session_start();
  
require_once('config.php');
  
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
    header('Location: myaccount.php');
}
  
$error_message = '';
if (isset($_POST['submit'])) {
 
    extract($_POST);
 
    if (!empty($email) && !empty($password)) {
        $sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
        $result = $conn->query($sql);
  
        if ($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            if($row['status']) {
                $_SESSION['id'] = $row['id'];
                header('Location: myaccount.php');
            } else {
                $error_message = 'Your account is not active yet.';
            }
        } else {
            $error_message = 'Incorrect email or password.';
        }
    } else {
        $error_message = 'Please enter email and password.';
    }
}
?>

Aquí en el código, mientras verificaba la contraseña, usé el método PHP md5 asumiendo que almacenó la contraseña usando este algoritmo.

Código de cierre de sesión

La siguiente parte es agregar código para cerrar la sesión del usuario. Para ello, cree un myaccount.phparchivo. Una cosa más que se necesita para manejar que solo los usuarios registrados deben acceder a esta página.

myaccount.php

<?php
session_start();
 
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
    unset($_SESSION['id']);
}
 
if (isset($_SESSION['id'])) {
    ?>
    <h3>Welcome User! <a href="?action=logout">Logout</a></h3>
    <?php
} else { //redirect to login page
    header('Location: index.php');
}
?>

Usando la sesión de PHP estamos averiguando si damos acceso a esta página o no. Si la sesión no está configurada, redirija al usuario a la página de inicio de sesión.

Espero que comprenda los conceptos básicos de la creación de un sistema de inicio de sesión en PHP. Comparta sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More