cierre de sesion

This commit is contained in:
2026-09-25 09:52:18 +02:00
parent ab26f5fa9a
commit ca5a5558b4
2 changed files with 140 additions and 110 deletions
+134 -108
View File
@@ -18,7 +18,7 @@ $username = $isLoggedIn ? $_SESSION['nombreUsuario'] : '';
<script src="js/jquery-4.0.0.min.js"></script> <script src="js/jquery-4.0.0.min.js"></script>
<style> <style>
</style> </style>
<nav class="navbar navbar-expand-lg navbar-kahoot py-3 mb-4"> <nav class="navbar navbar-expand-lg navbar-kahoot py-3 mb-4">
@@ -32,16 +32,16 @@ $username = $isLoggedIn ? $_SESSION['nombreUsuario'] : '';
<div class="collapse navbar-collapse" id="navbarContent"> <div class="collapse navbar-collapse" id="navbarContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0"></ul> <ul class="navbar-nav me-auto mb-2 mb-lg-0"></ul>
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<?php if ($isLoggedIn): ?> <?php if ($isLoggedIn): ?>
<!-- Menú desplegable cuando la sesión está iniciada --> <!-- Menú desplegable cuando la sesión está iniciada -->
<div class="dropdown"> <div class="dropdown">
<button class="btn user-dropdown-btn dropdown-toggle d-flex align-items-center gap-2" <button class="btn user-dropdown-btn dropdown-toggle d-flex align-items-center gap-2"
type="button" type="button"
id="userDropdown" id="userDropdown"
data-bs-toggle="dropdown" data-bs-toggle="dropdown"
aria-expanded="false"> aria-expanded="false">
<i class="fa-solid fa-circle-user fa-lg text-warning"></i> <i class="fa-solid fa-circle-user fa-lg text-warning"></i>
<span><?= htmlspecialchars($username) ?></span> <span><?= htmlspecialchars($username) ?></span>
</button> </button>
@@ -51,11 +51,14 @@ $username = $isLoggedIn ? $_SESSION['nombreUsuario'] : '';
<i class="fa-solid fa-user text-primary"></i> Perfil <i class="fa-solid fa-user text-primary"></i> Perfil
</a> </a>
</li> </li>
<li><hr class="dropdown-divider"></li>
<li> <li>
<a class="dropdown-item logout-item d-flex align-items-center gap-2" href="logout.php"> <hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item logout-item d-flex align-items-center gap-2" href="#" id="botonCerrarSesion">
<i class="fa-solid fa-right-from-bracket"></i> Cerrar Sesión <i class="fa-solid fa-right-from-bracket"></i> Cerrar Sesión
</a> </a>
</li> </li>
</ul> </ul>
</div> </div>
@@ -150,130 +153,153 @@ $username = $isLoggedIn ? $_SESSION['nombreUsuario'] : '';
</div> </div>
<script> <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();
// Registro // Limpiamos errores anteriores
$('#botonAceptarRegistro').click(function(event){ $('#regNombre').removeClass('is-invalid');
event.preventDefault(); $('#regEmail').removeClass('is-invalid');
console.log('hola'); $('#regPassword').removeClass('is-invalid');
let nombreUsuario = $('#regNombre').val().trim(); $('#regPasswordConfirm').removeClass('is-invalid');
let email = $('#regEmail').val().trim(); $('#errorRegistro').text('');
let contrasena = $('#regPassword').val();
let contrasenaConfirmacion = $('#regPasswordConfirm').val();
// Limpiamos errores anteriores // Comprobamos que las contraseñas coincidan
$('#regNombre').removeClass('is-invalid'); if (contrasena !== contrasenaConfirmacion) {
$('#regEmail').removeClass('is-invalid');
$('#regPassword').removeClass('is-invalid');
$('#regPasswordConfirm').removeClass('is-invalid');
$('#errorRegistro').text('');
// Comprobamos que las contraseñas coincidan $('#regPassword').addClass('is-invalid');
if(contrasena !== contrasenaConfirmacion){ $('#regPasswordConfirm').addClass('is-invalid');
$('#regPassword').addClass('is-invalid'); $('#errorRegistro').text('Las contraseñas no coinciden.');
$('#regPasswordConfirm').addClass('is-invalid');
$('#errorRegistro').text('Las contraseñas no coinciden.'); return;
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 $.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);
// Login // Marcamos los campos si hay error
$('#botonAceptarLogin').click(function(event){ $('#regNombre').addClass('is-invalid');
event.preventDefault(); $('#regEmail').addClass('is-invalid');
let email = $('#loginEmail').val().trim(); } else {
let contrasena = $('#loginPassword').val();
// Limpiamos errores anteriores // Registro correcto
$('#loginEmail').removeClass('is-invalid'); $('#errorRegistro')
$('#loginPassword').removeClass('is-invalid'); .removeClass('text-danger')
$('#errorLogin').text(''); .addClass('text-success')
.text(respuesta.exito);
// Comprobación básica // Limpiamos formulario
if(email === '' || contrasena === ''){ $('#formRegistro')[0].reset();
$('#errorLogin').text('Todos los campos son obligatorios.'); // Cerramos modal después de un segundo
setTimeout(function() {
location.reload();
}, 1000);
}
if(email === ''){ }); // Fin función ajax
$('#loginEmail').addClass('is-invalid');
});
// 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;
} }
if(contrasena === ''){ $.ajax({
$('#loginPassword').addClass('is-invalid'); 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) {
return; $('#loginEmail').addClass('is-invalid');
} $('#loginPassword').addClass('is-invalid');
$.ajax({ $('#errorLogin').text(respuesta.error);
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'); } else {
$('#loginPassword').addClass('is-invalid');
$('#errorLogin').text(respuesta.error); location.reload();
}
}else{ }); // Fin función ajax
location.reload(); });
}
}); // Fin función ajax // Cerrar sesión
$('#botonCerrarSesion').click(function(event) {
event.preventDefault();
}); $.ajax({
method: "POST",
url: "controladores/controladorUsuario.php",
data: {
'orden': 'cerrarSesion'
}
}).done(function(respuesta) {
//console.log(respuesta);
respuesta = JSON.parse(respuesta);
if (respuesta.error) {
console.log(respuesta.error);
} else {
// Sesión cerrada correctamente
location.reload();
}
}); // Fin función ajax
}); // Fin función click
</script> </script>
+6 -2
View File
@@ -59,7 +59,6 @@ switch ($_POST['orden']) {
'idUsuario' => $resultado->getIdUsuario(), 'idUsuario' => $resultado->getIdUsuario(),
'nombreUsuario' => $resultado->getNombreUsuario() 'nombreUsuario' => $resultado->getNombreUsuario()
]); ]);
} else { } else {
echo json_encode([ echo json_encode([
@@ -73,6 +72,12 @@ switch ($_POST['orden']) {
case 'cerrarSesion': case 'cerrarSesion':
// Limpiamos las variables de sesión
unset($_SESSION['idUsuario']);
unset($_SESSION['email']);
unset($_SESSION['nombreUsuario']);
// Destruimos la sesión
session_destroy(); session_destroy();
echo json_encode([ echo json_encode([
@@ -80,5 +85,4 @@ switch ($_POST['orden']) {
]); ]);
break; break;
} }