Partage
  • Partager sur Facebook
  • Partager sur Twitter

comment donner accès a un lien seulement a l'admin

Sujet résolu
    23 mai 2018 à 10:04:13

    Bonjour à tous :)

    Je me met depuis quelques semaines au php mais je ne cache pas que c'est encore flou pour pas mal de domaine :) 

    J'arrive a évoluer pas a pas grace à ce forum :) Mais là, je beugue complètement malgré mes recherches...

    J'ai créé un menu, visible de tous, mais je souhaiterais qu'une des lignes ne soit accessible (ou visible) uniquement par l'administrateur...

    J(ai bien trouvé des codes qui pourraient je pense repondre a mon attente, mais cela plante ma page ou ne change rien a cette dernière. Je suis donc bien conscient que ma facon de faire n'est pas bonne, mais je n'arrive pas a trouver (ou peut etre a comprendre) d'où vient l'erreur... :(

    Voici le code :

    <?php is_admin(true); 
     if ( ! is_admin() )?> 	
    <li class="<?php if(is_page_1( 'essai-page.php' ))
    {echo "active";}?>">
    <a href="<?php echo $essaipage; ?>">
    <span><i class="fa fa-users"></i><?php esc_html_e("essai", 'test') ?></span>
    </a>
    </li>

    Quelqu'un saurait il m'aider svp ?

    Bonne journée à tous

    -
    Edité par manuelbaranger1 23 mai 2018 à 10:05:14

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 10:13:27

      Le principe est le suivant :

      Tu à une fonction is_admin()

      Elle obtient l'utilisateur courant et vérifie le statut de ce dernier, s'il est un administrateur elle retournera vrai, sinon faux.

      Plus en détail : 

      C'est à toi de créé ta fonction is_admin(), à l'intérieur tu peux tester un objet utilisateur par exemple , que tu stockera dans une variable de session.

      Dans ta BDD tu à une table utilisateur dans laquelle tu à un id de grade, correspondant à un certain grade dans une table grade.

      Côté web tu aura donc ta classe utilisateur qui contient les valeurs issue de la table utilisateur.

      Ainsi, dans ta fonction is_admin tu aurais par exemple quelque chose du style

      function is_admin(){
      // Pour simplifier j'ai pris directement la valeur de la session
      // évidement, le mieux est de passer cette objet en argument de ta fonction
      // Ici ADMIN est une constante correspondant à l'id du grade ADMIN dans ta table grade.
      // grade est une propriété de la classe utilisateur
      return ($_SESSION['user']->grade == ADMIN);
      }

      -
      Edité par CodecadeMe 23 mai 2018 à 10:15:05

      • Partager sur Facebook
      • Partager sur Twitter
      Les erreurs sont les portes de la découverte.
        23 mai 2018 à 10:36:46

        Merci pour ton aide CodecadeMe :)

        Si je comprend bien, le code que j'ai mis ne contient pas d'erreur ?

        Ce code que tu me donne vient compléter le mien et doit etre ajouter sur la meme page, en début ?

        Et dans une "balise" <?php c'est bien ca ?  

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 15:02:32

          Alors ce que je t'ai proposé est très théorique, bien que je te donne un exemple de code pratique.

          J'ignore si tu dispose d'une BDD par exemple, et je ne sait pas si tu à des notions de programmation orientée objet.

          Donc malheureusement le code que je t'ai donné ne fonctionne pas tous seul non :)

          Donc : 

          - Possède tu une base de donnée connectée à ton site ?

          - Comment stocke tu ton administrateur ? Et les autres utilisateurs ?

          • Partager sur Facebook
          • Partager sur Twitter
          Les erreurs sont les portes de la découverte.
            24 mai 2018 à 9:03:12

            Tout ce que je peux te dire, c'est que j'ai une base de donnée que j'ai attaché au site lors de l'installation de base (installation wordpress)

            Après je suis dépassé ^_^

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2018 à 9:08:30

              Alors il faut poursuivre ton apprentissage, à moins que tu n'ai un moyen de différencier ton administrateur des autres utilisateur.

              Pour le moment, tu peux simplement t'amuser à passer dans le lien un paramètre en GET du style 'essai-page.php?grade=admin'.

              Et tu peux jouer avec cette variable grade.

              • Partager sur Facebook
              • Partager sur Twitter
              Les erreurs sont les portes de la découverte.
                24 mai 2018 à 9:13:52

                Ah ! j'ai trouvé un code qui s'approche de très près a ce que je souhaite !!! ^_^ 

                Par contre j'ai fait le test avec du texte -> ca fonctionne ! (affiché ou masqué)

                Mais quand je modifie le texte par un lien, cela plante mon page....

                Voici le code qui fonctionne avec un simple texte : 

                <?php
                $user_id = get_current_user_id();
                if ($user_id == 2) {
                    echo 'Lien affiche';
                } else {
                    echo 'Lien masque';
                }
                ?>

                Voici maintenant le code avec le lien a l'interieu, mais qui plante ma page :

                <?php
                $user_id = get_current_user_id();
                if ($user_id == 2) {
                    echo <li class="<?php if(is_page_1( 'essai-page.php'))
                {echo "active";}?>">
                <a href="<?php echo $essaipage; ?>">
                <span><i class="fa fa-users"></i><?php esc_html_e("essai", 'test') ?></span>
                </a>
                </li>;
                } else {
                    echo 'Lien masque';
                }
                ?>



                -
                Edité par manuelbaranger1 24 mai 2018 à 9:44:11

                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2018 à 10:14:46

                  C'est probablement dû au fait que tu à un echo dans un echo

                  echo <li class="<?php if(is_page_1( 'essai-page.php'))
                  {echo "active";}?>">
                  Essaie en supprimant le premier echo
                  <?php
                  $user_id = get_current_user_id();
                  if ($user_id == 2) {
                  ?>
                      <li class="<?=(is_page_1( 'essai-page.php'))?"active":""?>">
                  		<a href="<?php echo $essaipage; ?>">
                  		<span><i class="fa fa-users"></i>
                  			<?php esc_html_e("essai", 'test') ?>
                  		</span>
                  		</a>
                  	</li>;
                  <?php
                  } else {
                      echo 'Lien masque';
                  }
                  ?>

                  -
                  Edité par CodecadeMe 24 mai 2018 à 10:23:39

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Les erreurs sont les portes de la découverte.
                    24 mai 2018 à 11:05:01

                    Super !!! Ca fonctionne !!! :)

                    Merci beaucoup CodecadeMe !!! :)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 mai 2018 à 11:11:03

                      De rien, tu peux mettre ton sujet en résolue si tu n'à plus d'autres soucis :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Les erreurs sont les portes de la découverte.

                      comment donner accès a un lien seulement a l'admin

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown