Requête à une base de données erronée

Résolu/Fermé
piratabord Messages postés 152 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 3 février 2022 - 13 févr. 2017 à 00:05
piratabord Messages postés 152 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 3 février 2022 - 13 févr. 2017 à 19:13
Bonjour,

Voici ce que je veux faire :

J'ai une page html que je ne veux afficher uniquement si $_SESSION['id'] est "isset". Pour ça, voici le code que j'ai :

if(isset($_SESSION['id']))
{	
	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
//on affiche la page html
}


Mais, en plus de ça, je veux savoir si le joueur en question a activé son compte ou pas. Si il l'a fait, on affiche la page, sinon, on le redirige vers index.php. Voici le code :
if(isset($_SESSION['id']))
{	
	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
	
	$requete = $bdd->query("SELECT * FROM joueurs WHERE id =".$_SESSION['id']"");
	while($data = $requete->fetch())
		{
			$etat = $data['activation'];
			if($etat == 1)
			{
                                   //On affiche la page
                        }
                        else
                        {
                                  header("Location: index.php");
                        }

                }
}


Mon problème, est que je n'ai aucune idée de comment il faut faire pour vérifier à la fois si la session est isset, et si le compte a été validé...
C'est certainement tout bête, mais si quelqu'un a une solution...

Merci d'avance pour votre aide ;)

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 13/02/2017 à 10:54
Bonjour,

Voici ton code corrigé et remis en forme

//TOUJOURS récupérer PROPREMENT les variables AVANT de les utiliser
$id = isset($_SESSION['id']) ? $_SESSION['id'] : NULL;

if($id){

  $sql = "SELECT * FROM joueurs WHERE id = :id ";
  $datas = array(':id'=>$id);
  try{
     $requser = $bdd->prepare($sql);
     $requser->execute($datas);
     $user = $requser->fetch();
  }catch (Exception $e){
      //en cas d'erreur dans la requete
      echo " Error ! ".$e->getMessage();
   }
  
 $etat = !empty($user) ? $user['activation'] : 0;
 if($etat == 1){
     //On affiche la page
  } else {
    header("Location: index.php");
    exit(); //toujours faire un exit apres une redirection !
  }
}

Cordialement, 
Jordane                                                                 
1
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
13 févr. 2017 à 11:33
suggestion:
$id = isset($_SESSION['id']) ? $_SESSION['id'] : NULL;

if($id){

  $sql = "SELECT * FROM joueurs WHERE id = :id ";
  $datas = array(':id'=>$id);
  try{
     $requser = $bdd->prepare($sql);
     $requser->execute($datas);
     $user = $requser->fetch();
  }catch (Exception $e){
      //en cas d'erreur dans la requete
      echo " Error ! ".$e->getMessage();
   }
  
 $etat = !empty($user) ? $user['activation'] : 0;
 if($etat == 1){
     //On affiche la page
  } else {
    header("Location: index.php");
    exit(); //toujours faire un exit apres une redirection !
  }
}
else {
    header("Location: index.php");
    exit(); //toujours faire un exit apres une redirection !
  }
1
piratabord Messages postés 152 Date d'inscription jeudi 9 février 2017 Statut Membre Dernière intervention 3 février 2022 39
13 févr. 2017 à 19:13
ok super, merci beaucoup de votre aide !!! ;)
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
13 févr. 2017 à 00:43
bonsoir, je propose:
if(isset($_SESSION['id']))
{	
	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
	$requete = $bdd->query("SELECT * FROM joueurs WHERE id =".$_SESSION['id']"");
	$data = $requete->fetch();
			$etat = $data['activation'];
			if($etat == 1)
			{
                                   //On affiche la page
                        }
                        else
                        {
                                  header("Location: index.php");
                        }
}
 else
                        {
                                  header("Location: index.php");
                        }
-1