Verificació de correu electrònic: diferència entre les revisions
Cap resum de modificació |
|||
| Línia 42: | Línia 42: | ||
== Enviament del codi de verificació == | == Enviament del codi de verificació == | ||
=== Generació del codi === | |||
=== Enviament del correu === | |||
Seguidament, prepararem les capçaleres del correu: | |||
* Destinatari: l’email de l’usuari | |||
* Assumpte: Codi de verificació | |||
* Missatge: “El codi generat anteriorment” | |||
* Altres capçaleres: per complir amb stàndards de seguretat de Nominalia. Si un correu no té unes bones capçaleres, pot ser interpretat com spam | |||
A continuació, enviarem el correu amb la funció interna de PHP mail(). Aquesta funció espera rebre: | |||
* Destinatari | |||
* Assumpte | |||
* Missatge | |||
* Altres capçaleres | |||
Per tant indicarem les variables anteriorment definides. En cas de les altres capçaleres, degut a que és una array amb diferents vectors, farem servir la funció interna de PHP implode(), la qual ajunta els elements d’una array com cadenes de text amb un separador indicat. | |||
És molt important configurar PHP.ini per indicar a la funció mail quin servidor de correu electrònic local fer servir per l’enviament (Postfix, msmtp, etc). Per més informació sobre com configurar un servidor per l’enviament de correus electrònics es pot consultar l’apartat “Configuració del VPS per l'enviament de correus electrònics amb PHP” | |||
El correu dins de la safata d'entrada de qualsevol usuari, es visualitzaria de la següent manera | |||
[[Fitxer:CorreuCodiVerificacio.png|center|miniatura]] | |||
Revisió del 19:11, 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;
}
Enviament del codi de verificació
Generació del codi
Enviament del correu
Seguidament, prepararem les capçaleres del correu:
- Destinatari: l’email de l’usuari
- Assumpte: Codi de verificació
- Missatge: “El codi generat anteriorment”
- Altres capçaleres: per complir amb stàndards de seguretat de Nominalia. Si un correu no té unes bones capçaleres, pot ser interpretat com spam
A continuació, enviarem el correu amb la funció interna de PHP mail(). Aquesta funció espera rebre:
- Destinatari
- Assumpte
- Missatge
- Altres capçaleres
Per tant indicarem les variables anteriorment definides. En cas de les altres capçaleres, degut a que és una array amb diferents vectors, farem servir la funció interna de PHP implode(), la qual ajunta els elements d’una array com cadenes de text amb un separador indicat.
És molt important configurar PHP.ini per indicar a la funció mail quin servidor de correu electrònic local fer servir per l’enviament (Postfix, msmtp, etc). Per més informació sobre com configurar un servidor per l’enviament de correus electrònics es pot consultar l’apartat “Configuració del VPS per l'enviament de correus electrònics amb PHP”
El correu dins de la safata d'entrada de qualsevol usuari, es visualitzaria de la següent manera
