IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

organisation d'un switch-case en fonction de droits


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut organisation d'un switch-case en fonction de droits
    Bonjour à tous,

    J'organise mon site php autour d'un fichier index.php qui inclus les pages correspondants à ma variable section comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index.php?section=accueil
    au niveau code, cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
     
    	if (isset($_GET['section']))
    	switch(@$_GET['section'])
    	{
    	case "accueil":
    		include("pages/accueil.php");
    		break;
     
    	case "administration":
    		include("pages/administration.php");
    		break;
     
    	case "admin":
    	default:
    		include("pages/accueil.php");
    		break;
    	}
    ?>
    Je voudrais organiser les case de ce switch en fonction de droits particuliers dont l'état est stocké dans une variable de session. Cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
     
    	if (isset($_GET['section']))
    	switch(@$_GET['section'])
    	{
    	case "accueil":
    		include("pages/accueil.php");
    		break;
     
    	// Administrateur
    	if ($_SESSION['droits'] == 'administrateur')
    	{
    		case "administration":
    			include("pages/administration.php");
    			break;
    	}
     
    	case "admin":
    	default:
    		include("pages/accueil.php");
    		break;
    	}
    ?>
    Evidemment, cela ne marche pas, mais voilà ce que je souhaiterai car cela permettrait de ne pas prendre en compte le case 'administration" si on n'a pas les droits.

    J'ai malheureusement une tripoté de case maintenant, du coup, je me demande si je dois tout casser ou astucieusement trouver quelque chose qui modifiera très peu mon code et qui marchera. Comment faire ?

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 501
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 501
    Par défaut
    salut,
    et comme ca, ca donne quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    	if(isset($_GET['section']))
    	{
    		switch($_GET['section'])
    		{
    			case "accueil":
    				include("pages/accueil.php");
    			break;
    			case "administration":
    				// Administrateur
    				if($_SESSION['droits'] == 'administrateur')
    				{
    					include("pages/administration.php");
    				}
    			break;
    			case "admin":
    				default:
    				include("pages/accueil.php");
    			break;
    		}
    	}
    ?>
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    Au niveau du comportement souhaité, mon code erroné exprime ce que je souhaite. Le soucis dans ta solution, c'est qu'il ne va pas au case "défaut" (et donc il n'affiche rien sans gestion d'erreur, donc je dois gérer la redirection vers une page qui affiche un message d'erreur (à tous mes cases, et j'en ai plus de 100, ce n'est pas trop optimal).

    Pour gérer les droits d'un paquet de situation, je crois que la seule façon est de passer d'un switch-case à des if.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Language]Probleme de switch case
    Par nana1 dans le forum Langage
    Réponses: 20
    Dernier message: 17/11/2005, 00h49
  2. switch case pour deux variable en meme temps
    Par petitours dans le forum C
    Réponses: 3
    Dernier message: 06/11/2005, 19h20
  3. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37
  4. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25
  5. [Language] aide sur les switch case
    Par pouss dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2005, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo