Contrôle de rédiger

Résolu
Bonjour,

existe-t-il un code HTML, PHP ou Javascript qui contrôle si on visite cette page à partir d'un lien sur une autre page ou directement avec l'url dans le navigateur? Si on vient d'une autre page, on peut accéder, sinon, on ne peut pas entrer?

Merci pour votre aide



--
bien cordialement,
Administrateur LOLOSB© productions

7 réponses

  1. Contributeur
    Bonjour,

    Tu peux faire une variable de session que tu initialise sur ta page d'accueil ou après ta page d'identification (si tu en as une).
    Ensuite tu fera un test d'existence de cette variable sur tes autres pages... du coup, si quelqu'un tente d'arriver sur une page de ton site sans passer par ta page d'accueil, il se verra rejeter.
    1. merci,
      mais j'ai le problème que j'ai l'url http://monsite.com/message/afficher.php
      et j'ai une page http://monsite.com/message/rediger.php.php
      et j'ai une session qui es met dans l'url http://monsite.com/message/rediger.php?modifier_news=1
      mais je veux qu'on ne peux pas accéder à la page http://monsite.com/message/rediger.php , seulement à la page http://monsite.com/message/rediger.php?modifier_news=1
      1. Salut.

        La variable PHP $_SERVER['HTTP_REFERER'] contient l'URL complète de la provenance. Si l'utilisateur tombe sur la page en tapant directement l'URL, cette variable n'existe pas.

        Si tu veux interdire l'accès aux personnes ne provenant pas de ton site :
        if (!isset($_SERVER['HTTP_REFERER']) || !preg_match('#^http://example.com/#i',$_SERVER['HTTP_REFERER']) ) {
            echo 'Vous n\'êtes pas autorisé à afficher le contenu de cette page';
        } else { ?>
            <!-- Contenu -->
        <?php } ?>
        1. Contributeur
          Etrange, utilises-tu bien les variable de sessions du genre $_SESSION['nom'] ?

          En sommes tu fais, par exemple sur ta page d'accueil:

          session_start();
          
          $_SESSION['nom'] = "OK";
          


          Et sur toutes tes autres pages, au début:

          session_start();
          
          if(!isset($_SESSION['nom']))
          {
               echo "Erreur! Accès non autorisé";
               break; //ou exit();
          }
          


          1. merci,
            je mais où le code
            if (!isset($_SERVER['HTTP_REFERER']) || !preg_match('#^http://example.com/#i',$_SERVER['HTTP_REFERER']) ) {
                echo 'Vous n\'êtes pas autorisé à afficher le contenu de cette page';
            } else { ?>
                <!-- Contenu -->
            <?php } ?>
            et je remplace quoi par quoi?
            1. Au tout début de ta page.
              Remplace example.com par ton domaine et "<!-- contenu -->" par le contenu de la page à protéger.
          2. Contributeur
            Ah! Tu utilises déjà les variables server.
            Cela peut fonctionner aussi cependant d'après cette doc:

            http://php.net/manual/fr/reserved.variables.server.php

            C'est précisé que tous les serveurs web ne renvoient pas toutes les info de cette variable.

            Met ce code en commentaire (pour ne pas le perdre) et remplace le par ce que j'ai mis plus haut

            comme ceci:

            <?php
            session_start();
            
            if(!isset($_SESSION['nom']))
            {
                 echo 'Vous n\'êtes pas autorisé à afficher le contenu de cette page';
            }
            else { ?>
                <!-- Contenu -->
            <?php } ?>
            


            n'oublie pas d'initialiser la variable $_SESSION['nom'] sur la première page de ton site, sinon personne ne pourra plus y accéder.
            1. Tous les serveurs n'acceptent pas forcément les sessions ;)
              En tout cas, les hébergeurs ne fournissant pas les variables $_SERVER sont très rares, je n'en connais même aucun.
            2. Contributeur
              @avion-f16: Ah ? Je l'ignorais... d'un autre côté, les seules sites que j'ai fais tournent en local pas sur le net... Merci de l'info.

              @lolosb: Désolé, dans ce cas je sèche...
            3. pas grave, =)
              Merci comme-même
            4. @Neliel : Je ne connais pas non plus de serveurs désactivant les sessions, mais c'est possible de le faire.
          3. Merci, mais ça ne marche pas...
            Merci comme-même...
            Mais c'est pas trop grave! De toute façon, c'est une page protégée par un htpasswd et il y a que une personne (et moi) qui ont accès... je peux lui expliquer de ne pas y accéder...

            @+