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 una respuesta

Tu dirección de correo electrónico no será publicada.