Utiliser des rangs(administrateur,modérateur...)

Ce topic a été résolu
tranos_sigma

tranos_sigma Le 5 février 2017 à 19:26 (Édité le 25 janvier 2019 à 17:53)

bonjour,
j'aimerai savoir comment on pourrai faire pour utiliser des systèmes de rangs par exemple une personne a comme rang 1 ça veut dire qu'il est modérateur et qu'il a droit que a certaine fonction et rang 2 administrateur qu'il est le droit a tout 
voici ce que j'ai essayer de faire mais que je ne sais pas comment l'améliorer
<?php
session_start();

$bdd = new PDO('mysql:host=localhost;dbname=...','root','');

if(isset($_GET['id']) AND $_GET['id'] > 0) {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM membre WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();

$ranguser = $bdd->query('SELECT * FROM membre(rang) VALUES (?)');

if($userinfo('rang') == 1){?>
   <p>Les fonction modérateur</p>
<?php } ?>
<?php if($userinfo('rang') == 2){?>
   <p>Les fonction administrateur</p>
<?php } ?>
<?php } ?>
Si vous pouvez m'aider ça serait super sympa!
Balatharas

Balatharas Le 5 février 2017 à 19:34

$ranguser = $bdd->query('SELECT * FROM membre(rang) VALUES (?)');
C'est pas une insertion pourquoi tu met VALUES(?)  et (rang)
?
De plus si tu ne sais pas comment faire ça il va te falloir apprendre le php... On peut pas créer ton site a ta place 😉
tranos_sigma

tranos_sigma Le 5 février 2017 à 20:16

merci Beignet grace a toi j'ai trouver mon erreur c'est juste que j'avais mis des parenthèse et non des crocher a
if($userinfo('rang') == 1){?>

meme toi tu la meme pas vue cette erreur 😒
Balatharas

Balatharas Le 6 février 2017 à 17:45

Hum jai pas lu après enfait 😉
Mais bien vu 😉
tranos_sigma

tranos_sigma Le 6 février 2017 à 21:07 (Édité le 6 février 2017 à 21:08)

bonjour,

je sais que ce que je vais demander est tout simple mais je n'y arrive pas car je voudrai que quand je suis le modo que je puisse effacer des messages un peu comme ça
<form method="POST"> 
<input type="submit" value="delete chat" name="delete chat">
</form>
  <?php 
if(isset($_POST['delete chat'])){
    $delchatall = $bdd->prepare('DELETE FROM commentaires');
    $delchatall->execute(array($_POST['delete chat']));
  }
mais sauf ça ne marche pas est ce que vous pouvez m'aider svp!
Balatharas

Balatharas Le 6 février 2017 à 21:26

"ca marche pas aider moi"
C'est bien beau de nous lacher ça comme ça mais nous on fait quoi ^^ ? Je ne sais meme pas ce qui marche pas: une erreur ? 
Alors dis le.
Logiquement si tu veux pouvoir afficher le formulaire seulement si tu es modo alors:
<?php if($userinfo['rang'] == 1) { ?>
<form method="POST">
   <input type="submit" value="delete chat" name="delete chat" />
</form>
<?php } ?>
tranos_sigma

tranos_sigma Le 6 février 2017 à 21:43

oui c'est vrai merci Beignet mais enfaite c'est que quand je clique sur le bouton pour pouvoir effacer et bien ca ne marche pas les messages de mon tchat ne s'efface pas
Balatharas

Balatharas Le 8 février 2017 à 16:47 (Édité le 9 février 2017 à 18:08)

Alors voilà, je suis gentil aujourd'hui 😋 je te donne tout un code avec des explications.

Le formulaire pour supprimer tes messages:
Donc, d'abord tu crées un formulaire pour envoyer l'info = supprimer les messages.
MAIS il faut que seuls les modérateurs/administrateurs voient le formulaire donc qui ont un rang supérieur ou égal à 1
Ton formulaire:
L'attribut onclick="" et son contenu permettent de demander une confirmation pour supprimer.
<?php if($userinfo['rang'] >= 1 { ?>
<form method="POST" class="">
   <input onclick="return(confirm('Confirmez pour tout supprimer ou faites Annuler'));" type="submit" name="valid" class="" value="Supprimer tout les messages" />
</form>
?php } ?>
Ensuite c'est simple tu traites le formulaire quand on clique sur Supprimer tout les messages:
<?php
if(isset($_POST['valid']) && $userinfo['rang'] >= 1) { // on revérifie le rang après quand même
   $delchat = $bdd->prepare('DELETE * FROM chat');
   $delchat->execute([]);
   echo "Messages supprimés.";
}
?>

En fait ton erreur vient de ton array() qui n'avait besoin de rien contenir.
Ensuite pour ce qui est de ta requête pour trouver le rang de l'utilisateur sur la page
Déjà tu fais un query, un prepare suffit:
<?php
$user = $bdd->prepare('SELECT * FROM membres WHERE id = ?'); // Recherche dans la base de données (début)
$user->execute([$_SESSION['id']]); // On passe le critère id demandé plus haut dans la requête (les [ ] sont un raccourci de array() )

$userinfo = $user->fetch(); // On valide la recherche
?>
Ensuite tu affiches simplement tes infos:
<?php
echo $userinfo['id'];
echo $userinfo['pseudo'];

// Et donc le rang:
echo $userinfo['rang']
?>
Normalement ça devrait être bon, n'oublies pas de me donner ton retour.
tranos_sigma

tranos_sigma Le 8 février 2017 à 19:51

MERCI beaucoup beignet tes trop sympa de m'avoir repondu ca marche parfaitement mais juste pour information ta pas besoin de mettre un * quand tu delete car meme sans * ca marche comme meme
//comme ca 
$delchat = $bdd->prepare('DELETE FROM commentaires');
//et non comme ca
$delchat = $bdd->prepare('DELETE * FROM chat');
TheOldNoob

TheOldNoob Le 8 février 2017 à 22:31

comme même ? serieusement? -_-

Sinon le * n'est pas inutile !!! même si dans se cas là, ça peu effectivement fonctionné 😀

Après, je suis pas pro du php, mais la y'a pas une ID qui se balade dans un GET qui va être afficher dans le lien de la page ?
Et pourquoi ne pas utilisé les sessions de connexion pour faire apparaître les boutons en fonction du rôle?

Du coup mes questions se regroupe, si l'id apparait dans le lien de la page, il suffit a un utilisateur de changer l'id a la main jusqu'a trouver un compte admin ....
Balatharas

Balatharas Le 9 février 2017 à 18:07

Et pourquoi ne pas utilisé les sessions de connexion pour faire apparaître les boutons en fonction du rôle? 
Bah j'y ai pas pensé sur le coup 😋 le pire c'est que c'est ce que je fais cher moi xD
[...] si l'id apparait dans le lien de la page, il suffit a un utilisateur de changer l'id a la main jusqu'a trouver un compte admin
Ca c'est à lui de voir pour les vérifications
S'il a créé l'espace membre avec primfx, alors normalement il devrait afficher les infos comme editer, deconnexion ou autre que quand le $_SESSION['id'] = $_GET['id']
Mais en fait même s'il change l'id dans l'url, ça change pas l'id de sa session
tranos_sigma

tranos_sigma Le 9 février 2017 à 18:41

et pour les verifications chez trouver dans ma tete une technique pour que je sois sur qu'il ne puisse pas pourvoir changer d'id et trouver un compte admin je vous ferai partager si vous voudrez mon code si j'arrive
Balatharas

Balatharas Le 10 février 2017 à 17:54

Met le topic en résolu
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte