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