[RESOLU] Faire disparaitre une partie du menu en fonction du role

Eléphant du PHP | 109 Messages

14 juil. 2022, 16:29

Bonjour à tous,

Je souhaite faire disparaitre une partie de mon menu en fonction du rôle de l'internaute.
Je suis novice dans le php.
La j'ai réussi a le faire aller sur une page avec un message si, l'utilisateur clic dans le menu ou il à pas le droit d'aller.
Mais le mieux pour moi je pense serai de ne pas afficher la partie du menu.

Merci par avance pour votre aide
@+ Filou

Mammouth du PHP | 2417 Messages

14 juil. 2022, 16:45

La j'ai réussi a le faire aller sur une page avec un message si, l'utilisateur clic dans le menu ou il à pas le droit d'aller.
avec quel code ?

Eléphant du PHP | 109 Messages

15 juil. 2022, 05:28

Bonjour,
J'ai utiliser un switch dans les paramètre de ma session :

switch ($adress) {
case '/controllers/types-ctrl.php':
if($_SESSION['auth']->job != 5) {
header('location: /controllers/erreurs.php?code=19');
exit;
}
break;

Mammouth du PHP | 2417 Messages

15 juil. 2022, 07:01

il faut utiliser :
if($_SESSION['auth']->job != 5) {

}
else{

}

ne pas afficher une entrée d'un menu n'est pas suffisant pour la sécurité. si quelqu'un qui n'a pas le droit d'accéder à une url tape l'url dans sa barre d'adresse, et qu'aucun contrôle n'est fait, alors il y a une faille.

Eléphant du PHP | 109 Messages

17 juil. 2022, 12:37

Bonjour,

Merci pour votre aide.
Cela est a mettre directement dans le menu ?

@+ Filou

Eléphant du PHP | 109 Messages

18 juil. 2022, 21:35

Bonjour,

J'ai m'a navbar, suivant le niveau du job je souhaiterai faire disparaitre une partie du menu, enlever un attibut <li>
Mais je ne sais comment faire.
Pourriez vous m'aider ?

@+ Filou

ynx
Eléphant du PHP | 495 Messages

19 juil. 2022, 09:13

Bonjour,
Quel est le code qui affiche les éléments du menu ? As tu essayé d'ajouter une condition if ($_SESSION['auth']->job != 5) pour afficher le menu comme proposé par or1 ?

Avatar du membre
Eléphanteau du PHP | 41 Messages

19 juil. 2022, 09:49

pourquoi tu change pas d'autre éléments du menu selon l'utilisateur ? c'est plus simple tu construit ta page selon le type d'utilisateur . Et php n'utilise jamais le cpu à 100% c'est vraiment si tu fais des boucles dans des boucles sur des truc stupide que l'on ne fait qu'en java pour dire que c'est mieux. donc tu peux construire une page à la volée selon l'utilisateur. maintenant si ton site est voué à gérer 20 000 personnes h24 là c'est différent mais je te rassure si ce n'est pas un forum de série et de jeux illégale tu n'auras jamais ce genre de flux de personne. donc tu peux vraiment le faire mode sauvage code sans souci. et en plus tu peux aller plus loin les utilisateur courant si tu en a 10 et bien tu peux générer 10 page en cache pré-préparer et que tu rempli par la suite des données que tu as besoin. un html avec des tag du style [{Nom_Utilisateur}] voila tu pré construit un squelette en html qui sera rempli par PHP selon le type d'utilisateur et bin là tu gagne en rapidité.

Eléphant du PHP | 109 Messages

19 juil. 2022, 14:36

Merci YNX,

J'ai essayé mais cela n'a pas fonctionner.
<?php
If($_SESSION['auth']->job = 5) {
Ici la partie de mon menu si job =5
} else {

};
?>

Merci pour votre aide
@+ Filou

Avatar du membre
Eléphanteau du PHP | 41 Messages

19 juil. 2022, 15:01

c'est == et non = 5
= 5 c'est pour affecter une valeur on met la valeur dans une variable
$var = 5
== pour évaluer si c'est égale à 5
if($var == 5)
et le $_SESSION['auth']->job
est ce que $_SESSION['auth'] est un objet contenant la variable publique job ? si c'est le cas ->job fonctionne sinon ça ne veux rien dire
pour savoir cela tu dois faire un var_dump($_SESSION['auth']) cela t'indiquera si c'est un objet ou pas
dans le cas ou ce n'est pas un objet alors ->job ne fonctionnera pas et ne veut rien dire. et avec le = 5 aussi

Eléphant du PHP | 109 Messages

19 juil. 2022, 21:11

Bonsoir,
oui j'utilise la POO (du moins j'essai), job fait référence a un état dans ma table.

Merci pour votre aide
@+ Filou