Tauler d'administració: diferència entre les revisions
| Línia 19: | Línia 19: | ||
=== Obtenció 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ó<pre> | |||
// 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(); | |||
</pre> | |||
=== Mostra d'estadístiques globals === | === Mostra d'estadístiques globals === | ||
Per mostrar-les, únicament recuperarem les dades de la consulta i les afegirem en HTML, sempre escapant sortides.<pre> | |||
<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> | |||
</pre> | |||
== Administració d'usuaris (només per administradors editors) == | == Administració d'usuaris (només per administradors editors) == | ||
| Línia 29: | Línia 132: | ||
=== Formulari de desbloqueig d'usuaris === | === Formulari de desbloqueig d'usuaris === | ||
=== Eliminació d'estadístiques === | |||
== Codi complet == | == Codi complet == | ||
Revisió del 21:34, 10 gen 2026
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>