Verificació de correu electrònic
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;
}