2 Commits

5 changed files with 164 additions and 20 deletions
+136 -6
View File
@@ -4,8 +4,8 @@ if (session_status() === PHP_SESSION_NONE) {
} }
// Comprobación de sesión // Comprobación de sesión
$isLoggedIn = isset($_SESSION['usuario']) && !empty($_SESSION['usuario']); $isLoggedIn = isset($_SESSION['idUsuario']) && !empty($_SESSION['idUsuario']);
$username = $isLoggedIn ? $_SESSION['usuario'] : ''; $username = $isLoggedIn ? $_SESSION['nombreUsuario'] : '';
?> ?>
<!-- Bootstrap 5 CSS --> <!-- Bootstrap 5 CSS -->
@@ -15,6 +15,7 @@ $username = $isLoggedIn ? $_SESSION['usuario'] : '';
<!-- Google Fonts para estilo Kahoot --> <!-- Google Fonts para estilo Kahoot -->
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/index.css"> <link rel="stylesheet" href="css/index.css">
<script src="js/jquery-4.0.0.min.js"></script>
<style> <style>
@@ -89,7 +90,7 @@ $username = $isLoggedIn ? $_SESSION['usuario'] : '';
<label for="loginEmail">Correo electrónico</label> <label for="loginEmail">Correo electrónico</label>
</div> </div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
<input type="password" class="form-control border-dark" id="loginPassword" name="password" placeholder="Contraseña" required> <input type="password" class="form-control border-dark" id="loginPassword" name="contrasena" placeholder="Contraseña" required>
<label for="loginPassword">Contraseña</label> <label for="loginPassword">Contraseña</label>
</div> </div>
<div class="form-check"> <div class="form-check">
@@ -121,7 +122,7 @@ $username = $isLoggedIn ? $_SESSION['usuario'] : '';
<div class="modal-body"> <div class="modal-body">
<form id="formRegistro"> <form id="formRegistro">
<div class="form-floating mb-3"> <div class="form-floating mb-3">
<input type="text" class="form-control border-dark" id="regNombre" name="nombre" placeholder="Nombre" required> <input type="text" class="form-control border-dark" id="regNombre" name="nombreUsuario" placeholder="Nombre" required>
<label for="regNombre">Nombre</label> <label for="regNombre">Nombre</label>
</div> </div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
@@ -129,11 +130,11 @@ $username = $isLoggedIn ? $_SESSION['usuario'] : '';
<label for="regEmail">Correo electrónico</label> <label for="regEmail">Correo electrónico</label>
</div> </div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
<input type="password" class="form-control border-dark" id="regPassword" name="password" placeholder="Contraseña" required> <input type="password" class="form-control border-dark" id="regPassword" name="contrasena" placeholder="Contraseña" required>
<label for="regPassword">Contraseña</label> <label for="regPassword">Contraseña</label>
</div> </div>
<div class="form-floating mb-3"> <div class="form-floating mb-3">
<input type="password" class="form-control border-dark" id="regPasswordConfirm" name="passwordConfirm" placeholder="Confirmar contraseña" required> <input type="password" class="form-control border-dark" id="regPasswordConfirm" name="contrasenaConfirm" placeholder="Confirmar contraseña" required>
<label for="regPasswordConfirm">Confirmar contraseña</label> <label for="regPasswordConfirm">Confirmar contraseña</label>
</div> </div>
<input type="hidden" name="orden" value="registrar"> <input type="hidden" name="orden" value="registrar">
@@ -147,3 +148,132 @@ $username = $isLoggedIn ? $_SESSION['usuario'] : '';
</div> </div>
</div> </div>
</div> </div>
<script>
// Registro
$('#botonAceptarRegistro').click(function(event){
event.preventDefault();
console.log('hola');
let nombreUsuario = $('#regNombre').val().trim();
let email = $('#regEmail').val().trim();
let contrasena = $('#regPassword').val();
let contrasenaConfirmacion = $('#regPasswordConfirm').val();
// Limpiamos errores anteriores
$('#regNombre').removeClass('is-invalid');
$('#regEmail').removeClass('is-invalid');
$('#regPassword').removeClass('is-invalid');
$('#regPasswordConfirm').removeClass('is-invalid');
$('#errorRegistro').text('');
// Comprobamos que las contraseñas coincidan
if(contrasena !== contrasenaConfirmacion){
$('#regPassword').addClass('is-invalid');
$('#regPasswordConfirm').addClass('is-invalid');
$('#errorRegistro').text('Las contraseñas no coinciden.');
return;
}
$.ajax({
method: "POST",
url: "controladores/controladorUsuario.php",
data: {
'nombreUsuario': nombreUsuario,
'email': email,
'contrasena': contrasena,
'orden': 'registrarUsuario'
}
}).done(function(respuesta){
console.log(respuesta);
respuesta = JSON.parse(respuesta);
if(respuesta.error){
$('#errorRegistro').text(respuesta.error);
// Marcamos los campos si hay error
$('#regNombre').addClass('is-invalid');
$('#regEmail').addClass('is-invalid');
}else{
// Registro correcto
$('#errorRegistro')
.removeClass('text-danger')
.addClass('text-success')
.text(respuesta.exito);
// Limpiamos formulario
$('#formRegistro')[0].reset();
// Cerramos modal después de un segundo
setTimeout(function(){
location.reload();
}, 1000);
}
}); // Fin función ajax
});
// Login
$('#botonAceptarLogin').click(function(event){
event.preventDefault();
let email = $('#loginEmail').val().trim();
let contrasena = $('#loginPassword').val();
// Limpiamos errores anteriores
$('#loginEmail').removeClass('is-invalid');
$('#loginPassword').removeClass('is-invalid');
$('#errorLogin').text('');
// Comprobación básica
if(email === '' || contrasena === ''){
$('#errorLogin').text('Todos los campos son obligatorios.');
if(email === ''){
$('#loginEmail').addClass('is-invalid');
}
if(contrasena === ''){
$('#loginPassword').addClass('is-invalid');
}
return;
}
$.ajax({
method: "POST",
url: "controladores/controladorUsuario.php",
data: {
'email': email,
'contrasena': contrasena,
'orden': 'comprobarUsuario'
}
}).done(function(respuesta){
console.log(respuesta);
respuesta = JSON.parse(respuesta);
if(respuesta.error){
$('#loginEmail').addClass('is-invalid');
$('#loginPassword').addClass('is-invalid');
$('#errorLogin').text(respuesta.error);
}else{
location.reload();
}
}); // Fin función ajax
});
</script>
+24 -2
View File
@@ -178,17 +178,39 @@ class Usuario {
} }
} }
public static function login($email, $contrasena) { public static function login($email, $contrasena)
{
$usuario = self::buscarPorEmail($email); $usuario = self::buscarPorEmail($email);
// El usuario no existe
if (!($usuario instanceof Usuario)) { if (!($usuario instanceof Usuario)) {
// Limpiamos posibles datos de sesión anteriores
unset($_SESSION['idUsuario']);
unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']);
return null; return null;
} }
// Comprobamos la contraseña
if (password_verify($contrasena, $usuario->getContrasena())) { if (password_verify($contrasena, $usuario->getContrasena())) {
// Usuario validado correctamente
$_SESSION['idUsuario'] = $usuario->getIdUsuario();
$_SESSION['email'] = $usuario->getEmail();
$_SESSION['nombreUsuario'] = $usuario->getNombreUsuario();
// Devolvemos el usuario como hasta ahora
return $usuario; return $usuario;
} }
return null; // Contraseña incorrecta // Contraseña incorrecta
unset($_SESSION['idUsuario']);
unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']);
return null;
} }
} }
+1 -4
View File
@@ -54,10 +54,6 @@ switch ($_POST['orden']) {
if ($resultado instanceof Usuario) { if ($resultado instanceof Usuario) {
$_SESSION['idUsuario'] = $resultado->getIdUsuario();
$_SESSION['email'] = $resultado->getEmail();
$_SESSION['nombreUsuario'] = $resultado->getNombreUsuario();
echo json_encode([ echo json_encode([
'exito' => 'Login correcto', 'exito' => 'Login correcto',
'idUsuario' => $resultado->getIdUsuario(), 'idUsuario' => $resultado->getIdUsuario(),
@@ -74,6 +70,7 @@ switch ($_POST['orden']) {
break; break;
case 'cerrarSesion': case 'cerrarSesion':
session_destroy(); session_destroy();
-7
View File
@@ -1,11 +1,4 @@
<?php <?php
session_start();
// Usuario logueado (CAMBIAR A NULL PARA CERRAR SESIÓN)
$_SESSION['usuario'] = "Alexis";
$isLoggedIn = isset($_SESSION['usuario']);
$username = $isLoggedIn ? $_SESSION['usuario'] : '';
include 'cabecera.php'; include 'cabecera.php';
?> ?>
+2
View File
File diff suppressed because one or more lines are too long