Bonjour,

Lorsque je me connecte avec le bon identifiant et mot de passe, le message flash "Vous êtes maintenant connecté apparaît"; quand je déconnecte cela fonctionne aussi.
Par contre, lorsque je fais une erreur dans l'identifiant ou mot de passe, le message flash "id ou mdp incorrecte" n'apparaît pas.

login.php

<?php

    if(!empty($_POST) &&  !empty($_POST['username']) && !empty($_POST['password'])){

        require_once "inc/db.php";
        require_once 'inc/function.php'; 

        $req = $pdo->prepare("SELECT * FROM users WHERE (username=:username OR email=:username) AND confirmed_at IS NOT NULL"); 
        $req->execute(['username'=>$_POST['username']]); 
        $user = $req->fetch(); 

        if(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'] = "identifiant ou mot de passe incorrecte"; 
        }

    }
    require'inc/header.php'; 
?>

<h1>Se connecter</h1>

<form action="" method="POST">

    <div class="form-group">
        <label for="">Pseudo ou email </label>
        <input type="text" class="form-control" name="username" >

    </div>

    <div class="form-group">
        <label for="">Mot de passe</label>
        <input type="password" class="form-control" name="password" >

    </div>

    <button type="submit" class="btn btn-primary">Se connecter</button>

</form>

<?php require 'inc/footer.php'; ?>

j'ai tenté de changer la condition comme conseillé dans un précédent post; mais cela ne fonctionne toujours pas.

if($user && password_verify($_POST['password'], $user->password)){

Quelqu'un pourrait-il m'expliquer le problème ? Merci d'avance !

1 réponse


Carouge10
Réponse acceptée

Bonjour,
Quand tu n'as pas le bon mdp, le session_start ne se fait pas donc aucun message n'est rentré dans $_SESSION