Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'ai fais un espace membre, celui ci fonctionner parfaitement mais la, un problème apparaît.
Lorsque je me connecte, mon compte fonctionne bien (il est reconnu par la BDD) mais sa ne me connecte pas.
Après être connecté, le formulaire me renvoie sur index.php et normalement, en haut à droite (dans le menu) je vois mon pseudo ainsi que le lien pour se déconnecté.
La est le problème, même en se connectant je ne le vois plus alors qu’auparavant sa fonctionner très bien..
Voici mon code pour le traitement lors de la connexion:

<?php
session_start();
include 'includes/config.php';

if(isset($_POST['formconnexion']))
{
  $pseudoconnect = htmlspecialchars($_POST['pseudoconnect']);
  $mdpconnect = md5($_POST['mdpconnect']);
  if(!empty($pseudoconnect) AND !empty($mdpconnect))
  {
    $requser = $bdd->prepare("SELECT * FROM MyGameDB WHERE name = ? AND password = ?");
    $requser->execute(array($pseudoconnect, $mdpconnect));
    $userexist = $requser->rowCount();
    $user = $requser->fetch();
      if($userexist == 1)
      {
        if(isset($_POST['rememberme']))
        {
          setcookie(pseudo, $pseudoconnect, time()+365*24*3600,null,null,false,true);
          setcookie(password, $mdpconnect, time()+365*24*3600,null,null,false,true);
        }
        $userinfo = $requser->fetch();
        $_SESSION['id'] = $userinfo['id'];
        $_SESSION['pseudo'] = $userinfo['pseudo'];
        $_SESSION['mail'] = $userinfo['mail'];
        header("Location: profil.php?id=".$_SESSION['id']);
      }
      else
      {
        $erreur = '
        <div class="alert alert-danger padding-20 fade in no-border-radius" role="alert">
        <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
        <h4>Erreur lors de la connexion</h4>
        <br />Votre pseudo ou mot de passe n\'est pas correct !</div>';
      }
  }
  else
  {
    $erreur = '
    <div class="alert alert-danger padding-20 fade in no-border-radius" role="alert">
    <button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
    <h4>Erreur lors de la connexion</h4>
    <br />Tous les champs doivent être remplit!</div>';
  }
}
?>

Et mon code pour savoir si le membre est connecté ou pas:

<?php
      if(isset($_SESSION['id'])) { 
      ?>
      <div class="nav-right">
        <div class="nav-profile">
          <a href="#" id="nav-profile" class="profile dropdown-toggle" data-toggle="dropdown"><img src="img\user\avatar.jpg" alt=""> <span>xnooztv</span></a>
          <ul class="dropdown-menu" aria-labelledby="nav-profile">
            <li><a href="profil.php"><i class="fa fa-user"></i> Mon profil</a></li>
            <li><a href="jeux.php"><i class="fa fa-gamepad"></i> Mes jeux</a></li>
            <li><a href="editer.php"><i class="fa fa-gear"></i> Modifier mon compte</a></li>
            <li class="divider"></li>
            <li><a href="deconnexion.php"><i class="fa fa-sign-out"></i> Se déconnecter</a></li>
          </ul>
        </div>
      <?php } else { ?>
      <div class="nav-right">
        <div class="nav-profile">
          <a href="#" id="nav-profile" class="profile dropdown-toggle" data-toggle="dropdown"><img src="img\user\avatar.jpg" alt=""> <span>Invité</span></a>
          <ul class="dropdown-menu" aria-labelledby="nav-profile">
            <li><a href="login.php"><i class="fa fa-user"></i> Se connecter</a></li>
            <li><a href="register.php"><i class="fa fa-gear"></i> S'inscrire</a></li>
            </ul>
        </div>
      <?php } ?>

Ce que je veux

Je veux que mon espace membre me connecte à nouveau

Ce que j'obtiens

Mon espace membre arrive à me connecter, mais je ne suis pas réellement connecté (enfin je crois)

1 réponse


xnooztv
Auteur
Réponse acceptée

L'erreur venez du fait que j'appelle deux fois la méthode fetch() sur la requête qui ne devrait retourner qu'un seul résultat.
Le premier appel de fetch (avant la consition if($userexist == 1)) n'est pas nécessaire et inutile si l'utilisateur demandé n'existe pas, j'ai donc supprimer cette appel et ne laisser que le second.