Hola. Espero que te encuentres bien. Hoy te traigo un ejemplo super sencillo para poder realizar un login con lenguaje PHP y una base de datos MySQL.

¿Qué vamos a necesitar?

  • Servidor instalado. Puede ser local, por ejemplo, Wampserver.
  • Datos de acceso al servidor: usuario y contraseña. Por defecto suelen ser root y sin contraseña. Para hacer pruebas locales no hay problema pero yo te recomiendo que siempre te crees un usuario diferente y una contraseña segura.
  • Una base de datos MySQL. Más abajo te dejo el script de la base de datos que voy a utilizar para este ejemplo.
  • Un formulario que nos permita el ingreso de usuario y contraseña, además que cuente con un botón.

PASOS PARA REALIZAR EL LOGIN

PASO 1: Base de datos

Para este ejemplo voy a utilizar una base de datos llamada ‘loginsencillo’ y una tabla llamada ‘usuarios’ con 2 campos: usunombre y usuclave. Es importante observar que el campo usuclave es de 32 caracteres ya que trabajaremos con encriptado en MD5 (también existen otras funciones y más seguras).

El script es el siguiente:

CREATE DATABASE loginsencillo;
USE loginsencillo;

CREATE TABLE usuarios(
usunombre VARCHAR(20) PRIMARY KEY,
usuclave VARCHAR(32) NOT NULL
);

INSERT INTO usuarios VALUES
("admin", "81dc9bdb52d04dc20036dbd8313ed055"),
("pepe", "81dc9bdb52d04dc20036dbd8313ed055");

Ya tiene incluidos dos registros de prueba.

PASO 2: Formulario

Como les comenté será un ejemplo sencillo por eso no incluí estilos, solo presento el maquetado HTML, que se vería mas o menos así:

Lo importante es asignar correctamente los valores a los atributos ‘name’ de cada elemento ya que mediante esos datos PHP podrá acceder a los valores ingresados por el usuario.

    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        Usuario:<br>
        <input type="text" name="usuario"><br>
        Clave:<br>
        <input type="password" name="clave"><br><br>
        <input type="submit" name="login" value="Ingresar">
    </form>

action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>

Cuando nuestro código PHP se encuentra dentro del mismo archivo donde está nuestro formulario podemos hacer referencia al nombre del propio archivo mediante la variable super global $_SERVER. Ahora si el código PHP se encuentra en un archivo externo debemos colocar el nombre de dicho archivo incluyendo la extensión.

PASO 3: Programar lógica y datos

Una vez que tenemos nuestra base de datos implementada y nuestro formulario diseñado estamos en condiciones de realizar las validaciones y conexión de los datos.

Una vez mas les recuerdo que es un ejemplo sencillo, se le podría aplicar mas validaciones, como por el ejemplo podríamos incorporar el uso de variables $_SESSION, que lo dejaré para otro post.

El código PHP propuesto es el siguiente:

// 1. Conexion con el servidor y la base de datos
$conexion = new mysqli('localhost', 'root', '', 'loginsencillo');
if ($conexion->connect_errno) {
    echo "ERROR al conectar con la DB.";
    exit;
}

// 2. isset() del boton login
if(isset($_POST['login'])){

    // 3. Variables $_POST[]
    $u = $_POST['usuario'];
    $c = MD5($_POST['clave']); // La función MD5() estará encriptando lo ingresado para comparar con lo guardado

    if($u == "" || $_POST['clave'] == null){ // Validamos que ningún campo quede vacío
        echo "<script>alert('Error: usuario y/o clave vacios!!');</script>"; // Se utiliza Javascript dentro de PHP
    }else{
        // 4. Cadena de SQL
        $sql = "SELECT * FROM usuarios WHERE usunombre = '$u' AND usuclave = '$c'";

        // 5. Ejecuto cadena query()
        if(!$consulta = $conexion->query($sql)){
            echo "ERROR: no se pudo ejecutar la consulta!";
        }else{

            // 6. Cuento registros obtenidos del select. 
            // Como el nombre de usuario en la clave primaria no debería de haber mas de un registro con el mismo nombre.
            $filas = mysqli_num_rows($consulta);

            // 7. Comparo cantidad de registros encontrados
            if($filas == 0){
                echo "<script>alert('Error: usuario y/o clave incorrectos!!');</script>";
            }else{
                header('location:ok.html'); // Si está todo correcto redirigimos a otra página
            }

        }
    }
}

Te explico un poco más el código:

La clase ‘mysqli’ representa una conexión entre PHP y una base de datos MySQL y tiene 4 parámetros: servidor, usuario de bd, contraseña de bd, nombre de base de datos.

‘connect_errno’: es un atributo que devuelve el código de error de la última llamada. Mediante una estructura de control y con el valor almacenado dentro de una variable vamos mostrando los mensajes correspondientes.

‘mysqli_num_rows’ es una función que nos devuelve la cantidad de registros que encuentra luego de procesar un SELECT.

Aquí te dejo los archivos para que puedas descargar y probar: lecasabe-login-sencillo

Hasta aquí llego con este ejemplo. Espero que te sea útil. Cualquier duda dejame tus comentarios.

Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *