[RESOLU] Mon espace membre ne me connecte pas

Eléphanteau du PHP | 34 Messages

12 janv. 2016, 23:42

Bonjour,
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 } ?>

On est d'accord, il n'y à pas de problème? Car sa fonctionner à merveille.
Le problème peut-il venir du fait que j'ai rajouter un système de validation par mail?

Je sèche, je ne trouve pas le problème..

Cordialement.

Mammouth du PHP | 1967 Messages

13 janv. 2016, 08:40

vérifie le contenu de tes variables de _SESSION, sont elles instancié ? sont elles vide ? après t'être connecté.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

ynx
Mammouth du PHP | 586 Messages

13 janv. 2016, 11:59

Salut,

L'erreur vient surement du fait que tu appelles 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, tu peux donc supprimer cette appel et ne laisser que le second.

Bonne journée

Eléphanteau du PHP | 34 Messages

13 janv. 2016, 17:05

Salut,

L'erreur vient surement du fait que tu appelles 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, tu peux donc supprimer cette appel et ne laisser que le second.

Bonne journée
Salut,

Merci, sa à résolu mon soucis :)