Verificació de correu electrònic: diferència entre les revisions
Es crea la pàgina amb «== Verificació del correu electrònic == L’aplicació compta amb un procés de verificació de correu electrònic. Aquest procés consta d’un enviament d’un codi de 8 dígits al correu especificat, i l’usuari ha d’introduir aquest codi dins del formulari de verificació. És important remarcar que cal tenir el correu electrònic verificat per poder iniciar sessió amb 2FA.». |
Cap resum de modificació |
||
| Línia 3: | Línia 3: | ||
És important remarcar que cal tenir el correu electrònic verificat per poder iniciar sessió amb 2FA. | És important remarcar que cal tenir el correu electrònic verificat per poder iniciar sessió amb 2FA. | ||
== 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 de l'usuari i per tant actualitzar registres de la BD farem servir la [[Connexions a la BD (A5.3)#Connexió d'escriptura|connexió d'escriptura]]. | |||
require 'funcions.php'; | |||
require './connexioBD/connexioRW.php'; | |||
== Requerir autenticació i no tenir el correu verificat == | |||
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ó [[Funcions de la pràctica 5.3#requerir autenticacio|requerir_autenticacio]] | |||
// Requerir autenticació per accedir a la pàgina | |||
requerir_autenticacio(); | |||
A més, l'usuari únicament podrà accedir a la pàgina únicament si no té el correu verificat, en cas que el tingui, el retornarem a la seva pàgina privada. | |||
Per això, mitjançant la ID de la sessió, obtindrem el mail (per enviar el correu) i l'estat de verificació. En cas que l'estat de verificació sigui "si", retornarem l'usuari a la seva pàgina privada, evitant que es torni a enviar un correu de verificació i tornar haver de passar per aquest procés<pre> | |||
// ID de l'usuari a partir de la sessió | |||
$usuari_id = $_SESSION['usuari']['id']; | |||
// Obtenir l'email i l'estat de l'email de l'usuari | |||
$stmt = $pdo->prepare("SELECT email, email_verificat FROM usuaris WHERE id = ?"); | |||
$stmt->execute([$usuari_id]); | |||
$usuari = $stmt->fetch(); | |||
// Si la consulta no retorna res, significa que no existeix cap usuari amb aquella ID | |||
if (!$usuari) { | |||
header('Location: login.php'); | |||
exit; | |||
} | |||
// Si a la BD està especificat que l'usuari ja ha verificat l'email, no és necessair que ho torni a fer | |||
if ($usuari["email_verificat"] == "si"){ | |||
header('Location: privada.php'); // Redirigim directament a la pàgina privada | |||
exit; | |||
} | |||
</pre> | |||
== Enviament del codi de verificació == | |||
Revisió del 19:08, 10 gen 2026
Verificació del correu electrònic
L’aplicació compta amb un procés de verificació de correu electrònic. Aquest procés consta d’un enviament d’un codi de 8 dígits al correu especificat, i l’usuari ha d’introduir aquest codi dins del formulari de verificació.
És important remarcar que cal tenir el correu electrònic verificat per poder iniciar sessió amb 2FA.
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 de l'usuari i per tant actualitzar registres de la BD farem servir la connexió d'escriptura.
require 'funcions.php'; require './connexioBD/connexioRW.php';
Requerir autenticació i no tenir el correu verificat
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, l'usuari únicament podrà accedir a la pàgina únicament si no té el correu verificat, en cas que el tingui, el retornarem a la seva pàgina privada.
Per això, mitjançant la ID de la sessió, obtindrem el mail (per enviar el correu) i l'estat de verificació. En cas que l'estat de verificació sigui "si", retornarem l'usuari a la seva pàgina privada, evitant que es torni a enviar un correu de verificació i tornar haver de passar per aquest procés
// ID de l'usuari a partir de la sessió
$usuari_id = $_SESSION['usuari']['id'];
// Obtenir l'email i l'estat de l'email de l'usuari
$stmt = $pdo->prepare("SELECT email, email_verificat FROM usuaris WHERE id = ?");
$stmt->execute([$usuari_id]);
$usuari = $stmt->fetch();
// Si la consulta no retorna res, significa que no existeix cap usuari amb aquella ID
if (!$usuari) {
header('Location: login.php');
exit;
}
// Si a la BD està especificat que l'usuari ja ha verificat l'email, no és necessair que ho torni a fer
if ($usuari["email_verificat"] == "si"){
header('Location: privada.php'); // Redirigim directament a la pàgina privada
exit;
}