Tauler d'administració
Tauler d'administració
Tots els usuaris administradors tenen accés a un tauler d'administració on es pot consultar les estadístiques globals de l'aplicació. A més a més, si l'usuari és administrador editor, pot accedir a uns formularis de gestió d'usuaris
Inicialització de la sessió i connexió a la BD
Sempre que es treballa amb sessions, el primer que hem de fer és iniciar-la abans d'escriure el codi HTML
session_start();
A més, hem de requerir el fitxer amb les funcions i una connexió a la BD. En aquest cas, com hem de modificar dades d'usuaris i per tant actualitzar registres de la BD farem servir la connexió d'escriptura.
require 'funcions.php'; require './connexioBD/connexioRW.php';
Requerir autenticació i ser administrador
Per accedir a aquesta pàgina, és imperatiu que l'usuari estigui autenticat, en cas contrari no hi pot accedir. Per verificar que l'usuari està autenticat, farem servir la funció requerir_autenticacio
// Requerir autenticació per accedir a la pàgina requerir_autenticacio();
A més, per accedir a aquesta pàgina l'usuari ha de tenir el rol d'administrador editor o administrador lector. Per comprovar-ho farem servir la funció es_admin
Mostra d'estadístiques globals
Obtenció d'estadístiques globals
Les estadístiques globals són:
- De tots els usuaris
- Autenticacions exitoses
- Autenticacions errònies
- Restabliments de contrasenyes
- Dels usuaris normals
- Autenticacions exitoses
- Autenticacions errònies
- Restabliments de contrasenyes
- Dels administradors (editors i visualitzadors)
- Autenticacions exitoses
- Autenticacions errònies
- Restabliments de contrasenyes
Les obtindrem mitjançant una consulta a la taula activitat, on realitzarem la suma de registres que coincideixin amb la paraula clau de la seva respectiva acció
// Consulta SQL per obtenir les estadístiques
$stmt = $pdo->query("
SELECT
-- Autenticacions correctes (login + auto-login) de tothom
SUM(a.accio IN ('login', 'auto-login')) AS total_autenticacions,
-- Logins erronis de tothom
SUM(a.accio = 'error-login') AS total_error_logins,
-- Restabliments de contrasenyes
SUM(a.accio = 'restablir-contrasenya') AS total_restabliment_contrasenyes,
-- Autenticacions correctes d'usuaris normals
SUM(
a.accio IN ('login', 'auto-login')
AND u.rol = 'usuari'
) AS auth_usuaris,
-- Logins erronis d'usuaris normals
SUM(
a.accio = 'error-login'
AND u.rol = 'usuari'
) AS errors_usuaris,
-- Restabliment de contrasenyes d'usuaris normals
SUM(
a.accio = 'restablir-contrasenya'
AND u.rol = 'usuari'
) AS restabliments_contrasenya_usuaris,
-- Autenticacions correctes d'administradors
SUM(
a.accio IN ('login', 'auto-login')
AND u.rol IN ('ed_admin', 'vi_admin')
) AS auth_admins,
-- Logins erronis d'administradors
SUM(
a.accio = 'error-login'
AND u.rol IN ('ed_admin', 'vi_admin')
) AS errors_admins,
-- Restabliment de contrasenyes d'administradors
SUM(
a.accio = 'restablir-contrasenya'
AND u.rol IN ('ed_admin', 'vi_admin')
) AS restabliments_contrasenya_admins
FROM activitat a
JOIN usuaris u ON u.id = a.usuari_id
");
$autenticacions = $stmt->fetch();
Mostra d'estadístiques globals
Per mostrar-les, únicament recuperarem les dades de la consulta i les afegirem en HTML, sempre escapant sortides.
<section class="stats-section">
<h2 class="section-title">Estadístiques globals</h2>
<div class="stats-grid-top">
<div class="stat-card main">
<span class="label">Total Autenticacions</span>
<span class="value"><?= $autenticacions['total_autenticacions'] ?? 0 ?></span>
</div>
<div class="stat-card error">
<span class="label">Logins Erronis</span>
<span class="value"><?= $autenticacions['total_error_logins'] ?? 0 ?></span>
</div>
<div class="stat-card warn">
<span class="label">Restabliments</span>
<span class="value"><?= $autenticacions['total_restabliment_contrasenyes'] ?? 0 ?></span>
</div>
</div>
<div class="stats-grid-secondary">
<div class="stat-group">
<h3>Usuaris normals</h3>
<div class="row"><span>Autenticacions:</span> <strong><?= $autenticacions['auth_usuaris'] ?? 0 ?></strong></div>
<div class="row"><span>Errors d'autenticació:</span> <strong><?= $autenticacions['errors_usuaris'] ?? 0 ?></strong></div>
<div class="row"><span>Restabliments de contrasenyes:</span> <strong><?= $autenticacions['restabliments_contrasenya_usuaris'] ?? 0 ?></strong></div>
</div>
<div class="stat-group">
<h3>Administradors</h3>
<div class="row"><span>Autenticacions:</span> <strong><?= $autenticacions['auth_admins'] ?? 0 ?></strong></div>
<div class="row"><span>Errors d'autenticació:</span> <strong><?= $autenticacions['errors_admins'] ?? 0 ?></strong></div>
<div class="row"><span>Restabliments de contrasenyes:</span> <strong><?= $autenticacions['restabliments_contrasenya_admins'] ?? 0 ?></strong></div>
</div>
</div>
</section>