Page 1 sur 1

probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 26 mars 2019, 22:52
par asgardlegrand
bonjour a tous j'essai de faire un site.j'ai repris le code d'une personne qui a abonné le projet mais je ne saisi pas tout son travail initial
je creer un formulaire d'inscription qui est envoyé et l'admin doit valider l'inscription
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/logs.css">
</head>
<body>

<form method="post">
    <h1>Inscription</h1></br>
		<input type="text" name="nom" id="nom" placeholder="nom" required></br></br>
		<input type="text" name="prenom" id="prenom" placeholder="prenom" required></br></br>
		<input type="text" name="mail" id="mail" placeholder="mail valide" required></br></br>
		<input type="text" name="pseudo" id="pseudo" placeholder="Pseudo" required></br></br>
		<input type="text" name="password" id="password" placeholder="Password" required></br></br>
		<input type="submit" name="formsend" id="formsend" value="Envoyer le formulaire">
</form>

<?php
include 'database.php';
global $db;

if(isset($_POST['formsend'])){
  extract($_POST);
  $q = $db->prepare("INSERT INTO `users`(`nom`,`prenom`,`mail`,`pseudo`, `password`) VALUES ('$nom','$prenom','$mail','$pseudo', '$password') ");
  $q->execute();
  echo "Votre inscription est réaliser, contacter un admin pour valider vôtre compte";
  ?></br><a href="index.php">Retour à l'acceuil</a><?php
  };
?>


</body>
</html>
l'admin modifie alors le grade qui passe de 0 à 1
j'installe une page de connexion qui doit demande le pseudo et le password au membre, si celui ci a le groupe 1 d'inscrit dans la base de donnée il peux acceder a la page accueil. sinon il est renvoyé à la page index. ( demande de login).
j'ai la page index qui vérifie si le pseudo et le mdp sont dans la base mais il n'y a pas la requete pour verifier la qualité du groupe ( 1 ou 0 ). pouvez vous m'aider
voici la page index
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" type="text/css" href="css/logs.css">
</head>
<body>
    <img src="img/images.jpg">
<form method="post">
		<input type="text" name="pseudo" id="pseudo" placeholder="Identifiant" required></br></br>
    <input type="text" name="password" id="password" placeholder="Password" required></br></br>
		<input type="submit" name="formsend" id="formsend" value="Connection">
</form>
<a href="inscription.php">Inscription</a></br>

<?php
include 'database.php';
global $db;

if(isset($_POST['formsend'])){
  extract($_POST);
  $q = $db->prepare("SELECT * FROM `users` WHERE `pseudo` = :pseudo");
  $q->execute(['pseudo' => $pseudo]);
  $result = $q->fetch();

  if($result == true){
    if($password == $result['password']){
      header('Location:accueil.php');

    }

    else {
      echo "le mdp est incorrecte";
    }
    }

  else {
    echo "Le compte avec le pseudo : $pseudo n'existe pas.";
  }

  }
?>

</body>
</html>

ensuite j'aimerais pouvoir vérifier a chaque page du site si le membre est bien logué merci enormement pour celui ou celle qui acceptera de m'aider cela fait 3 semaines que je suis dessus et je suis un peu perdu la.

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 27 mars 2019, 09:21
par Spols
le plus simple est d'inclure le groupe dans ta condition de requète

$q = $db->prepare("SELECT * FROM `users` WHERE `group` = 1 AND `pseudo` = :pseudo");

L'utilisateur ne saura alors pas si c'est car il n'est pas inscrit ou pas encore accepter. mais ca marchera, seul les utilisateur du groupe 1 pourront se connecter.

Ensuite tu peux modifier le script pour rassurer l'utilisateur que sont inscription est entregistré et qu'il lui faut un peu de patience pour qu'elle soit validée.
il te faudra alors récupérer cette valeur de groupe dans ta requètye et ajouter un if.
 $q = $db->prepare("SELECT password, group FROM `users` WHERE `pseudo` = :pseudo");//Il est toujours mieux de spécifier les champs dont tu as besoin
  $q->execute(['pseudo' => $pseudo]);
  $result = $q->fetch();

  if($result == true){
    if($result['group'] != 1){
echo "le compte n'est pas encore activé";
    } elseif($password == $result['password']){
      header('Location:accueil.php');

    }

    else {
      echo "le mdp est incorrecte";
    }
    }

  else {
    echo "Le compte avec le pseudo : $pseudo n'existe pas.";
  }
Je note 2 choses importante, il semble que les mots de passe sont stocké en clair, non crypté/hashé c'est une très mauvaise pratique.
si l'utilisateur va directement sur la page acceuil.php, il n'aura pas besoin de se connecter.

Il te faut utiliser les SESSION, trouve toi un bon tutoriel sur le sujet cela te sera très utile.

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 27 mars 2019, 13:12
par asgardlegrand
merci beaucoup je vais deja travailler sur ta reponse et ensuite ameliorer le tout. un grand merci

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 28 mars 2019, 13:02
par asgardlegrand
merci ca fonctionne tres bien, maintenant je voudrais permettre l'accés au page si les personnes appartiennent aux groupes 1, 2 et 3 comment puis ecrire le code j'ai essayé dans les conditions if avec la double bar du "ou" en enlevant le where group = 1 mais ca ne prend plus aucun group.
 $q = $db->prepare("SELECT password, group FROM `users` WHERE `pseudo` = :pseudo");//Il est toujours mieux de spécifier les champs dont tu as besoin
  $q->execute(['pseudo' => $pseudo]);
  $result = $q->fetch();

  if($result == true){
    if($result['group'] != 1||  $result['group'] != 2 || $result['group'] != 3 || $result['group'] != 4){
echo "le compte n'est pas encore activé";
    } elseif($password == $result['password']){
      header('Location:accueil.php');

    }

    else {
      echo "le mdp est incorrecte";
    }
    }

  else {
    echo "Le compte avec le pseudo : $pseudo n'existe pas.";
  }

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 28 mars 2019, 14:23
par Spols
non ta condition est mal construite,
je la résume:
"si group != 1 ou group != 2 ou group != 3 ou group != 4"
dons si group = 1
on obtient
"si False ou True ou true ou true" => true
si group = 0
"si True ou True ou true ou true" => true

vois tu pourquoi cela ne parche pas
il y a 2 solutions
soit if($result['group'] == 0)
soit if($result['group'] != 1 && $result['group'] != 2 && $result['group'] != 3 && $result['group'] != 4)

La deuxième englobant les cas où group vaux 5 ou plus

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 28 mars 2019, 18:58
par asgardlegrand
oui je vois ce que tu veux dire. je vais regarder de plus prêt ta réponse merci de tes efforts.

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 28 mars 2019, 19:19
par asgardlegrand
derniere question.
je voudrais permettre l'accés au page du site en fonction du groupe, donc j'ouvre la session start et ensuite je donne la condition par session group. mais ca ne fonctionne pas ca ne prend que la premiere condition.
<?php
session_start ();

// On récupère nos variables de session
if ($_SESSION['group'] == 3 && $_SESSION['group'] == 4 ) {
echo 'Bienvenue monsieur ' . $_SESSION['nom'];
 ?>
j'affiche la page et son contenu
puis
<?php }



else {
	header("Location: menu.php");
}
?>

</body>
</html>
quand il est dans le groupe 3 ca fonctionne mais quand il est dansd le groupe 4 ca me renvoi a la page menu .

Re: probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 29 mars 2019, 02:21
par asgardlegrand
c bon j'ai trouvé il suffit d'emploué les bonne formule
if ($_SESSION['group'] == 3 XOR $_SESSION['group'] == 4) {

Re: [RESOLU] probleme pour vérifier si un membre est du groupe 1 donc peux avoir accés a la page accueil.

Posté : 29 mars 2019, 08:55
par Spols
en effet un simple OR est aussi bon