8722 sujets

Développement web côté serveur, CMS

Bonjour,

Je développe le site d’une association en tant qu’amateur éclairé, donc avec des manques de compétence bien compréhensibles.
J’essaie en ce moment de mettre en place un espace membre, mais je butte sur un problème.
Lorsque un membre veut s’inscrire il saisi et valide un formulaire ce qui provoque l’envoi d’un email de validation au membre.
Cet email comporte trois informations, l’adresse de retour, l’id du membre et un token codé :

https://xxxxxx.fr/yyyyyy/zzzz.php?id=4&token=0twlTjt3H4mIE4vGsHapd50VAKoiHKkyVnL3CuknNsqmhkemLyBZHMsEMXQN


Voici le code de la page zzzz.php

<?php
$user_id = $_GET['id'];
$token = $_GET['token'];
require 'inc/db.php'; //Connexion à la base de données
$req = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$req->execute([$user_id]);
$user = $req->fetch();
session_start();

if($user && $user->confirmation_token == $token ){
    $pdo->prepare('UPDATE users SET confirmation_token = NULL, confirmed_at = NOW() WHERE id = ?')->execute([$user_id]);
    $_SESSION['flash']['success'] = 'Votre compte a bien été validé';
    $_SESSION['auth'] = $user;
    header('Location: account.php');
}else{
    $_SESSION['flash']['danger'] = "Ce token n'est plus valide";
    header('Location: login.php');
}


J’ai vérifié que sur cette page que je récupère bien "$user_id" et "$token",
J’ai aussi vérifié que dans la base de données que "id" et "confirmation_token" existent avec les bonnes valeurs.
Mais la page me retourne « Ce token n’est plus valide ».
Je cherche depuis un moment une erreur dans le code mais je ne trouve pas.

Merci pour votre aide
Patrick MARA