8768 sujets

Développement web côté serveur, CMS

Bonjour à tous !

J'ai une page afin de gérer un espace membre en php-mysql et je sèche depuis quelques temps sur la partie "login".
En fait tout fonctionne bien lorsque je rentre les bons id.
Mais ce qui coince c'est par exemple si je mets des id inconnu ou avec des erreurs, cela est censé renvoyer un message d'erreur mais rien ne s'affiche.
J'ai le même type de script dans d'autres pages et cela fonctionne bien mais là rien !

Je précise qu'il y a une base de bootstrap afin d'éviter de me taper trop de code pour la partie HTML

Voici la partie qui coince :

Je pense qu'il y a un soucis à partir de
$user = $req->fetch();

Je vérifie d'abords si un utilisateur existe avant de check le password si ==null je renvoi le message d'erreur mais il ne se passe rien...


<?php
if(!empty($_POST) && !empty($_POST['email']) && !empty($_POST['pass']))
{
    require_once 'db.php';
    $req = $pdo->prepare('SELECT * FROM utilisateurs WHERE (email = :email) AND confirmed_at IS NOT NULL');
    $req->execute(['email' => $_POST['email']]);
    $user = $req->fetch();
    if($user == null){
        $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect !';
    }
    elseif(password_verify($_POST['pass'], $user->pass))
    {
        session_start();
        $_SESSION['auth'] = $user;
        $_SESSION['flash']['succes'] = 'Vous êtes connecté !';
        header('Location: account.php');
        exit();
    }
        else
        {
            $_SESSION['flash']['danger'] = 'Identifiant ou mot de passe incorrect !';
        }
}
?>
<?php require 'header.php'; ?>

<center>
    <h1>Se connecter</h1>
    <form action="" method="POST">
        <label>Adresse e-mail : <input type="email" name="email" class="form-control" /></label><br/>
        <label>Mot de passe : <input type="password" name="pass" class="form-control" /></label><br/><br />
        <input type="submit" class="btn btn-primary" value="Se connecter"/>
    </form>
</center>
<?php require 'footer.php'; ?>


A vot' bon coeur !
Salut,
Ton session_start est trop bas dans le code, il faut le mettre tout au début.
Salut,

Exact en plus ton session_start est présent seulement dans le cas où ton mot de passe est correct. Pour les cas d'erreur tu ne mets aucun session_start.

Du coup met ton session_start avant tes conditions Smiley cligne
Wow super !! Tout fonctionne impecc
En fait un session_start suffit au début du code et ça passe pour tous les cas d'erreurs

Un grand merci !

==> Résolu !
Gianni54 a écrit :
Wow super !! Tout fonctionne impecc
En fait un session_start suffit au début du code et ça passe pour tous les cas d'erreurs

Un grand merci !

==&gt; Résolu !


Session start est quasi obligatoire à mettre en debut de page, la seul chose avant lui c'est l'ouverture de la balise PHP Smiley smile