Lo primero que vamos a hacer es el Login. Necesitamos un formulario normal y corriente:
<div class="container" > <div class="jumbotron"> <h1>Introduce tu usuario y contraseña</h1> <h2>Si no estás en el sistema se creará tu usuario</h2> <h2 class="text-danger"><?=$error?></h2> </div> <form method="post"> <div class="form-group"> <label for="nombre">Usuario:</label> <input type="text" class="form-control" name="nombre"> </div> <div class="form-group"> <label for="pwd">Password:</label> <input type="password" class="form-control" name="password"> </div> <button type="submit" class="btn btn-primary">Enviar</button> </form> </div>
Cuando se hace el submit recuperamos los datos y lo comprobamos en la BD:
<?php require_once 'libreria.php'; $error=""; session_start(); //Recuperamos el valor de nombre y password $nombre= filter_input(INPUT_POST, 'nombre'); $password= filter_input(INPUT_POST, 'password'); //Si no están vacíos es porque hay un registro o login, lo comprobamos en la BD if (!empty($nombre) && !empty($password)){ //La función comprobar Usuario nos devuelve el id del usuario si existe $idUsuario=comprobarUsuario($nombre,$password); //Si existe el usuario guardamos la información en la BD y redirigimos al index if ($idUsuario){ $_SESSION['idUsuario']=$idUsuario; $_SESSION['nombre']=$nombre; header("location:index.php"); } else{ $error="Usuario o contraseña incorrecta"; } } ?>
La función comprobarUsuario está en libreria, y se encarga de gestionar el alta o comprobación:
function comprobarUsuario($nombre, $password) { try { $conn = conectar(); //Buscamos un usuario con el nombre solicitado $sql = "select * from usuarios where nombre=:nombre"; $st = $conn->prepare($sql); $st->execute(['nombre' => $nombre]); $usuario = $st->fetch(); //Si no existe es un alta, lo insertamos en la BD if (!$usuario) { $st = $conn->prepare("insert into usuarios (nombre,password) values (:nombre,:password)"); $st->execute(['nombre' => $nombre, 'password' => md5($password)]); //Y devolvemos el id del usuario insertado return $conn->lastInsertId(); } else { //Si el usuario existe miramos si la contrasela coincide, si es así devolvemos el id if (md5($password) == $usuario['password']) { return $usuario['idusuarios']; } } //Si no se da ninguna de las condiciones devolvemos falso return false; } catch (Exception $ex) { echo $ex->getMessage(); return false; } }