Blog
Este tutorial es la continuación del de cómo hacer un login en PHP, así que antes de comenzar con este les recomiendo darle un vistazo.
En el tutorial mencionado anteriormente hicimos un login en PHP y Bootstrap sin usar una base de datos, en este vamos a introducirla para poder realizar la validación correcta de un usuario ya registrado.
Agregando login en PHP con base de datos MYSQL
Para realizar esto vamos a tener que modificar el archivo login.php que habíamos hecho en el tutorial anterior:
<?php session_start(); // Obtengo los datos cargados en el formulario de login. $email = $_POST['email']; $password = $_POST['password']; // Datos para conectar a la base de datos. $nombreServidor = "localhost"; $nombreUsuario = "root"; $passwordBaseDeDatos = ""; $nombreBaseDeDatos = "prueba"; // Crear conexión con la base de datos. $conn = new mysqli($nombreServidor, $nombreUsuario, $passwordBaseDeDatos, $nombreBaseDeDatos); // Validar la conexión de base de datos. if ($conn ->connect_error) { die("Connection failed: " . $conn ->connect_error); } // Consulta segura para evitar inyecciones SQL. $sql = sprintf("SELECT * FROM usuarios WHERE email='%s' AND password = %s", mysql_real_escape_string($email), mysql_real_escape_string($password)); $resultado = $conn->query($sql); // Verificando si el usuario existe en la base de datos. if($resultado){ // Guardo en la sesión el email del usuario. $_SESSION['email'] = $email; // Redirecciono al usuario a la página principal del sitio. header("HTTP/1.1 302 Moved Temporarily"); header("Location: principal.php"); }else{ echo 'El email o password es incorrecto, <a href="index.html">vuelva a intenarlo</a>.<br/>'; } ?>
Aparte de agregar el código necesario para conectar a la base de datos y obtener el usuario con su email y password debemos prestar atención a la linea:
if($resultado){
Es donde se chequea si el usuario consultado en la base de datos existe o no.
Bueno espero que se haya entendido y ante cualquier problema no duden en dejar un comentario.
Amigo muchisisisimas gracias por el código me sirve mucho, en la línea 23 hay un error:
es uno típico de comillas pero bueno así lo tienes email=’%s’ AND password = %s”,
y así es WHERE email=’%s’ AND password = ‘%s'”, GRACIAS!!!
Gracias Nicolas. Me alegra mucho que te haya sido útil.
Buenos días amigo, excelente post pero tengo dos preguntas:
1) ¿El código está completo?
2) A mi me da esto Fatal error: Uncaught Error: Class ‘mysqli’ not found in C:\wamp\www\
Hola David, gracias por pasarte por el blog. En cuanto a tus preguntas, el código está completo, para que no te tire ese error lo más probable es que tengas que habilitar la extensión php_mysqli.dll en tu archivo de configuración php.ini ya que seguramente no la tenes correctamente habilitada. Cualquier otra consulta avisame.
Me da un error en la linea 23, ayudaaa
Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\LoginDB\login.php:23 Stack trace: #0 {main} thrown in C:\xampp\htdocs\LoginDB\login.php on line 23.
Ya corregí lo de las comillas pero aun asi
Revisa porque a mi si me funciona. Saludos!
Muy buenas,
Yo tengo el mismo problema, lo he revisado todo, he añadido las comillas pero nada, el error persiste. Alguna sugerencia?
Muchas gracias.
$sql = sprintf ( ” SELECT * FROM usuarios WHERE email = ‘ %s ‘ AND password = ‘ %s ‘ ” , mysqli_real_escape_string ( $ email ) , mysqli_real_escape_string ( $ password ) ) ;
una pregunta en la parte que dice nombre del servidor que coloco si lo realizo con phpmyadmin aiuddaaaa
$conn = new mysqli($nombreServidor, $nombreUsuario, $passwordBaseDeDatos, $nombreBaseDeDatos);
Es igual, localhost
// Verificando si el usuario existe en la base de datos.
if($resultado){
// Guardo en la sesión el email del usuario.
$_SESSION[’email’] = $email;
// Redirecciono al usuario a la página principal del sitio.
header(“HTTP/1.1 302 Moved Temporarily”);
header(“Location: principal.php”);
}else{
echo ‘El email o password es incorrecto, vuelva a intenarlo.’;
}
?>
Como lo puedo hacer si en vezde un email lo qie intento hacer es verificar un documento y si el documento existe que me redireccione al documento EJEMPLO
en un txtbox ingreso un numero 1234 si existe 1234 mostrar 1234.pdf y asi sucesivamente ….
Posible error, por obsolecencia de mysql_real_escape_string
https://www.php.net/manual/es/function.mysql-real-escape-string.php
Este codigo me funciona para base datos creada desde mysqlAdmin y con new PDO?