Bonsoir,

J'ai un petit soucis avec mon système de membres (tutoriel suivi). Donc à chaque fois que le membre a des informations qui changent (par exemple, le pseudo), il doit se reconnecter afin qu'il puisse voir le changement opéré. Alors que normalement, cela devrait se faire par rapport au rafraichissement de la page (à moins que je me trompe!).

Voici quelques parties de mes codes :

  • page login.php
<?php
    if (!empty($_POST) && !empty($_POST['email']) && !empty($_POST['password'])) 
    {
        require_once 'inc/db.php';
        $req = $bdd->prepare('SELECT * FROM users WHERE email = :email AND confirmed_at IS NOT NULL');
        $req->execute(['email' => $_POST['email']]);
        $user = $req->fetch();
        if($user == null){
            $_SESSION['flash']['danger'] = 'L'utilisateur n'existe pas';
        }
        elseif (password_verify($_POST['password'], $user->password)) {
            session_start();
            $_SESSION['auth'] = $user;
            $_SESSION['flash']['success'] = 'Vous êtes maintenant connecté !';
            header('Location:./account.php');
            exit();
        } else {
            $_SESSION['flash']['danger'] = 'Idenfifiant ou mot de passe incorrecte !';
            header('Location:./login.php');
        }
    }
?>

Lorsque le prénom est mis à jour dans la base de données, l'affichage du nouveau devrait être imminent et automatique. Hors, afin que l'affichage prenne effet, l'utilisateur doit se déconnecter. Hors, j'aimerais que cela soit fait automatiquement.
Voici comment j'affiche mes informations :

echo $_SESSION['auth']->prenom;

Merci par avance aux personnes qui me porteront secours :)

Legendary

7 réponses


AlexJM
Réponse acceptée

Tu as deux méthodes :

  • soit tu ne mets que l'ID en session et à chaque chargement de page tu charges les infos
  • soit tu modifies tous les renseignements en session quand tu modifies l'utilisateur

Ta session est créée à la connexion de l'utilisateur. Quand il modifie son pseudo, la session n'est pas modifiée. Tu peux donc faire en sorte que lorsqu'un utilisateur modifie son profil, la session prend les nouvelles infos.

            $_SESSION['flash']['danger'] = "L'utilisateur n'existe pas"; // Attention quand tu utilise des simple quotes  dans tes phrases

J'ai vu la fonction session_reset mais je ne suis pas sûr.
Je ne vois pas comment faire ça du coup (n'étant pas encore expérimenté avec les SESSIONS et/ou COOKIE)

La solution "soit tu ne mets que l'ID en session et à chaque chargement de page tu charges les infos", c-a-d une requête SELECT ?

Quelle est la solution la plus simple des deux selon vous ?

Oui, au début de chaque page, s'il a un ID dans sa session, tu chargesavec un select les autres infos

Les deux se valent je pense

D'accord, je vais essayer ça alors. Je vais carrément créer une fonction comme ça, encore plus simple :)
Merci AlexJM.

Pas de problème, si tu as d'autres questions ;)