Résolu [PHP/MySQL] Système de Rangs

Statut
N'est pas ouverte pour d'autres réponses.

MxMaster

Membre
Inscription
1 Août 2018
Messages
9
Réactions
6
Points
1 374
Bonjour aux membres
Depuis peu, je développe un site qui ne sera ni en concurrence, ni même du même type que RealityGaming. Dans tout les cas, si je le voulais, je pourrais jeté l'éponge dés aujourd'hui :rofl: !
J'ai donc pu déjà développer un système de compte avec un "ID, PSEUDO, AGE, AVATAR", mais également quelques bricoles. Ce-pendant, j'aimerais beaucoup développer un système de rangs comme sur RealityGaming "Administrateur, Modérateur..." Mais étant encore débutant dans le domaine, je ne sais pas comment m'y prendre, c'est pourquoi, je sollicite un peu de votre aide sans non plus utiliser des termes chinois dont je ne comprendrais pas.


Je souhaiterais également avoir un petit exemple sur comment je pourrais éventuellement utiliser la fonction $_['rang'] par la suite..

Exemplairement, comment faire pour avoir le pseudo jaune si je suis admin !


Merci de votre compréhension, et de votre aide !
 

Wims

Premium
Inscription
27 Août 2014
Messages
1 805
Réactions
418
Points
15 911
Salut,

Tu peux rajouter une colonne "rang" dans ta table.

J'imagine que pour "echo" le nom de l'utilisateur tu fais ceci :
PHP:
echo $_SESSION['pseudo'];

Si oui, tu as juste à faire de même pour le "rang".

Et par la suite faire une condition du genre :

Rang = 1 = Utilisateur
Rang = 2 = Administrateur
...

PHP:
if($_SESSION['rang'] == 1){
    echo "<span style='color:black'>Pseudonyme</span>";
}elseif($_SESSION['rang'] == 2){
    echo "<span style='color:red'>Pseudonyme</span>";
}
...

Avec l'exemple ci-dessus, si le membre a son rang égal à 1 alors "Pseudonyme" apparaît en noir. Par contre si son rang est égal à 2 alors sa apparaît en rouge..
Après tu as juste à remplacer le "Pseudonyme" par la variable que tu utilises pour appeler le pseudonyme de l'utilisateur.

Et par la suite tu peux aussi faire un système de permission de ce style (toujours basé sur l'exemple du dessus) :

PHP:
<?php
// Si l'utilisateur est administrateur
if($_SESSION['rang'] == 2){
    echo "Accueil - Blog - AdminCP";
// Si l'utilisateur n'est pas administrateur
}else{
    echo "Accueil - Blog";
}
 
Dernière édition:

Ruby.

Undefined
Inscription
25 Avril 2012
Messages
518
Réactions
118
Points
11 846
Salut,

Tu peux rajouter une colonne "rang" dans ta table.

J'imagine que pour "echo" le nom de l'utilisateur tu fais ceci :
PHP:
echo $_SESSION['pseudo'];

Si oui, tu as juste à faire de même pour le "rang".

Et par la suite faire une condition du genre :

Rang = 1 = Utilisateur
Rang = 2 = Administrateur
...

PHP:
if($_SESSION['rang'] == 1){
    echo "<span style='color:black'>Pseudonyme</span>";
}elseif($_SESSION['rang'] == 2){
    echo "<span style='color:red'>Pseudonyme</span>";
}
...

Avec l'exemple ci-dessus, si le membre a son rang égal à 1 alors "Pseudonyme" apparaît en noir. Par contre si son rang est égal à 2 alors sa apparaît en rouge..
Après tu as juste à remplacer le "Pseudonyme" par la variable que tu utilises pour appeler le pseudonyme de l'utilisateur.

Et par la suite tu peux aussi faire un système de permission de ce style (toujours basé sur l'exemple du dessus) :

PHP:
<?php
// Si l'utilisateur est administrateur
if($_SESSION['rang'] == 2){
    echo "Accueil - Blog - AdminCP";
// Si l'utilisateur n'est pas administrateur
}else{
    echo "Accueil - Blog";
}
et sa $_SESSION['rang'] il la sort d'où ?? :)
 

medine14

Membre
Inscription
7 Décembre 2012
Messages
188
Réactions
15
Points
16 846
Je sais si c'est une bonne idée de se surcharger de variables de session -> ( $_SESSION['value'] ) , il faudrait qu'on sache quel niveau tu as en php si possible, car quand tu dis termes chinois ça peut vouloir dire pleins de chose ^^
 

MxMaster

Membre
Inscription
1 Août 2018
Messages
9
Réactions
6
Points
1 374
Merci pour vos réponses.

Code:
<?php
session_start();


$bdd = new PDO('mysql:host=127.0.0.1;dbname=tsa', 'root', '');

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

   if($_SESSION['rang'] == 4){
    echo "Accueil - Blog - AdminCP";
// Si l'utilisateur n'est pas administrateur
}else{
    echo "Accueil - Blog";
}
  
?>
Le test des echos est concluant.
Ce-pendant, je veux que mon pseudo soit rouge ou jaune, ou bleu, ou rose.. selons le grade, comment faire ?

Code:
<h2>Profil de <?php echo $userinfo['pseudo']; ?></h2>
         <br /><br />
         <?php
         if(!empty($userinfo['avatar']))
         {
        ?>
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
Salut,

Tu peux rajouter une colonne "rang" dans ta table.

J'imagine que pour "echo" le nom de l'utilisateur tu fais ceci :
PHP:
echo $_SESSION['pseudo'];

Si oui, tu as juste à faire de même pour le "rang".

Et par la suite faire une condition du genre :

Rang = 1 = Utilisateur
Rang = 2 = Administrateur
...

PHP:
if($_SESSION['rang'] == 1){
    echo "<span style='color:black'>Pseudonyme</span>";
}elseif($_SESSION['rang'] == 2){
    echo "<span style='color:red'>Pseudonyme</span>";
}
...

Avec l'exemple ci-dessus, si le membre a son rang égal à 1 alors "Pseudonyme" apparaît en noir. Par contre si son rang est égal à 2 alors sa apparaît en rouge..
Après tu as juste à remplacer le "Pseudonyme" par la variable que tu utilises pour appeler le pseudonyme de l'utilisateur.

Et par la suite tu peux aussi faire un système de permission de ce style (toujours basé sur l'exemple du dessus) :

PHP:
<?php
// Si l'utilisateur est administrateur
if($_SESSION['rang'] == 2){
    echo "Accueil - Blog - AdminCP";
// Si l'utilisateur n'est pas administrateur
}else{
    echo "Accueil - Blog";
}
Très mauvaise idée d'afficher la couleur du grade en fonction de la session. Car si l'utilisateur connecté a une session rang "2", alors il verra tous les noms d'utilisateurs en rouge :p
Le mieux (même si c'est plus lourd) reste de faire des requêtes SQL pour récuperer le rang du membre dont il est question et appliquer la couleur en fonction de ça.

Effectivement je décourage l'utilisation des sessions pour stocker tout et n'importe quoi, une seule variable de session est nécéssaire, stockant par exemple l'id du membre.
Ensuite avec cette session id on récupère le membre connecté avec une requête SQL ;)

Merci pour vos réponses.

Code:
<?php
session_start();


$bdd = new PDO('mysql:host=127.0.0.1;dbname=tsa', 'root', '');

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

   if($_SESSION['rang'] == 4){
    echo "Accueil - Blog - AdminCP";
// Si l'utilisateur n'est pas administrateur
}else{
    echo "Accueil - Blog";
}
 
?>
Le test des echos est concluant.
Ce-pendant, je veux que mon pseudo soit rouge ou jaune, ou bleu, ou rose.. selons le grade, comment faire ?

Code:
<h2>Profil de <?php echo $userinfo['pseudo']; ?></h2>
         <br /><br />
         <?php
         if(!empty($userinfo['avatar']))
         {
        ?>
Je ne te conseille pas de coder comme ça, ça va très vite être illisible et si tu laisse ton code pendant 1/2 mois tu ne vas plus rien comprendre :p
Défini un numéro de rang = un grade

En base de donnée tu créer ta colonne "rang" dans ta table "utilisateurs".
Tu peux (par exemple) partir du principe que:
  • Rang 1: utilisateur
  • Rang 2: modérateur
  • Rang 3: administrateur
Tu définies le numéro que tu veux (fais en sorte que ce soit logique: plus le numéro est haut, plus le grade est haut !)

Ensuite tu fais tes conditions PHP. Admettons que tu fasses un système de blogs avec commentaires. Voici un exemple de code où tu récupères tous les utilisateurs sur une page
Code:
<?php
$selectionnerLesUtilisateurs = $bdd->prepare('SELECT * FROM utilisateurs');
$selectionnerLesUtilisateurs->execute();

while($utilisateur = $selectionnerLesUtilisateurs->fetch()) {
if($utilisateur['rang'] == 1) {
$color = 'blue';
} else if($utilisateur['rang'] == 2) {
$color = 'orange';
} else if($utilisateur['rang'] == 3) {
$color = 'red';
?>
Pseudo: <span style="color: <?php echo $color; ?>;"><?php echo $utilisateur['nom']; ?></span>
<?php
}
?>
Bon, c'est un exemple codé de manière assez degueulasse (je ne sais pas même pas si le code marche) mais j'ai fait ça en 3 minutes depuis l'editeur du forum alors je te laisse tester tout seul :trollface:
Inspire toi en et si tu as des questions n'hésite pas :p Mais si ton but est de créer un forum passe par un CMS (car ça ne sers à rien de réinventer la roue pour faire moins bien !)

Bonne chance :D
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut