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 :

empêcher l'affichage d'une page en dehors de son conteneur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai Avatar de totophe56
    Homme Profil pro
    Concepteur FOAD
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur FOAD
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut empêcher l'affichage d'une page en dehors de son conteneur
    Bonjour,

    je suis en train de développer quelques bouts de code en ajax et PHP

    Ma structure de page et requêtes ajax sont fonctionnels mais j'aimerais savoir comment il serait possible d'empêcher l'affichage direct d'une page php, qui elle normalement s'affiche dans une div suite à une requête ajax appelant une page contenant un include tel que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php
    include ('../pages/contenupage.php');
    en effet, si on connaît l'adresse directe de la page /pages/contenupage.php il est possible de l'afficher sans la mise en page du site

    vous remerciant d'avance pour votre aide

    Totophe56

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu transmets sûrement des données via Ajax à la page PHP, non ?
    il suffit alors de faire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if( isset($_POST['data_transmis']) )
    {
       // traitement de la page
       // ................
    } else {
       echo 'Oh, bouffon ! Tu te crois où ?';
       exit;
    }
    Ou alors vérfiier qu'une variable de SESSION, initialisée sur le site, est bien présente.

  3. #3
    Membre à l'essai Avatar de totophe56
    Homme Profil pro
    Concepteur FOAD
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur FOAD
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    suis-je bête

    je fais mes test avec des pages vides, normal que n'importe qui affiche la page

    par contre cela ne change rien au fait que je peux afficher ma page en dehors de la div main de ma page index

  4. #4
    Invité
    Invité(e)
    Par défaut
    Un moyen très simple :
    fichier test.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $cefichier = 'test.php';
    if( strpos($_SERVER['PHP_SELF'], $cefichier) ){
    	echo 'Accès direct !! Back off !!';
    	exit;
    } else {
    	echo 'ok, la page est bien en include dans une autre';
    	// on continue le traitement ....
    ?>
    .....
    <?php
    }
    ?>
    en accès direct, ça affichera :
    Accès direct !! Back off !!
    Inclus dans une autre page test2.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include('./test.php'); ?>
    ça affichera :
    OK, la page est bien en include dans une autre
    CQFD.

  5. #5
    Membre à l'essai Avatar de totophe56
    Homme Profil pro
    Concepteur FOAD
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur FOAD
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bonjour et encore merci pour ton aide,

    ce script est une bonne idée mais apparemment l'appel à partir de mon menu obtenu en ajax n'est pas compris comme un appel d'une page différente de l'appel du script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $cefichier = 'contenu1.php';
    if( strpos($_SERVER['PHP_SELF'], $cefichier) ){
    	echo 'Accès direct !! Back off !!';
    	exit;
    } else {
    m'affiche toujours Accès direct !! Back off !!, en insérant juste le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ($_SERVER['PHP_SELF'];
    m'affiche le chemin de ma page que je le lance via le chemin direct du fichier ou via le menu de la page index

    quand au contrôle de l'affichage de la page en cas de connexion ou non j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(isset($_SESSION['nom']) && isset($_SESSION['motpasse'])){
       echo 'contenu1';  
    }
     
     else {
     
        header('location: ../index.php');
     }
    qui est fonctionnel

    mon soucis est donc que la variable $_SERVER['PHP_SELF'] comprend que le script dans la page est la provenance de l'action

    merci pour votre aide, ça doit pas être loin

  6. #6
    Invité
    Invité(e)
    Par défaut
    ! oups ! (c'est mon 3ème ! oups ! du jour....)
    en effet, si c'est un fichier appelé via Ajax, tu as raison.
    Par contre, ça fonctionne pour un fichier en include();

    Le mieux est donc :
    1/ une variable de SESSION,
    • initialisée dans la page principale (= celle qui appelle)
    • et vérifiée dans la page appelée.

    2/ ou simplement un paramètre, passé via Ajax à la page appelée

    => montre-nous le code de ton MENU, et surtout celui de la fonction Ajax utilisée.

  7. #7
    Membre à l'essai Avatar de totophe56
    Homme Profil pro
    Concepteur FOAD
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur FOAD
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    pourquoi tant de oups quand on essaie d'aider les gens ??? c'est pas un dû

    mon menu en php :

    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
    25
    26
     echo '<ul class="ul1">';           
                      $menu1= pg_query($pgcon,"SELECT COUNT(idsousmenu1) AS rows FROM menu1;");
                      $retnummenu1= 3;
     
                        echo '<li class="li1"><a href="#">menu1</a>';
                      echo'<ul class="ul2">'; 
                      for ($i=1;$i<=$retnummenu1;$i++){
                       $url1= pg_query($pgcon,"SELECT urlsousmenu1 FROM menu1 WHERE idsousmenu1 = $i;");
                       $returl1= pg_fetch_assoc($url1);
                       $urltrait1=$returl1['urlsousmenu1'];
                       $nom1= pg_query($pgcon,"SELECT nomsousmenu1 FROM menu1 WHERE idsousmenu1 = $i;");
                       $retnom1= pg_fetch_assoc($nom1);
                       $nomtrait1=$retnom1['nomsousmenu1'];
     
     
                       echo ('<li class="li2">');
                       /*echo ('<a href="/pages/'.$urltrait.'.php">'.$nomtrait.'</a>');*/
                       echo ('<a href="#" onclick="appelmenu(\'pages/'.$urltrait1.'.php\' );return false;">'.$nomtrait1.'</a>');
     
     
                      echo '</li>';
     
     
                      }
                    echo '</ul>';
                    echo '</li>';
    ma fonction ajax :
    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
    function appelmenu(urlpage)
     { 
     
       var xhr = creation_xhr(); // je lance ma fonction ajax
     
              	xhr.onreadystatechange = function() { 
                        if (xhr.readyState == 4 && xhr.status == 200) {;
     
                             document.getElementsByTagName('main')[0].innerHTML=xhr.responseText;
     
                           }
                            else 
                            { }
     
     
    		};
     
                xhr.open("GET", urlpage, false); // Je renseigne quel fichier php va s'ouvrir
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xhr.send(null);  // J'envoie les paramètres
     
     
     }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bon.
    Tu ne passes pas de paramètres à tes pages. On va donc opter pour la solution avec SESSION.

    1/ dans la page principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php session_start(); // PREMIERE LIGNE de la page principale (includes compris)
    // on définit une session :
    $SESSION['TouchePasAMaPage'] = 'eliJbKZALaz561ezc6qse18941CE4'; // un code...
    Et dans TOUTES les pages appelées via Ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php session_start(); // PREMIERE LIGNE de la page (includes compris)
    if( empty($SESSION['TouchePasAMaPage']) || $SESSION['TouchePasAMaPage'] != 'eliJbKZALaz561ezc6qse18941CE4') // le MEME code, évidemment
    {
       echo 'Go to Hell !!';
       exit; // stop la page (le reste du code n'est pas éxécuté)
    }
    // inutile de mettre un else : on continue si OK...

  9. #9
    Membre à l'essai Avatar de totophe56
    Homme Profil pro
    Concepteur FOAD
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Concepteur FOAD
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Bonsoir

    en fait je me suis dirigé vers le javascript (j'ai bien vu ta réponse d'hier mais j'essayais d'accrocher en ajax ou javascript

    mes pages devant s'afficher dans la balise main de la page index et donc de ne pas comporter de balise main, j'ai donc décidé de vérifier l'existence de cette balise "main" en javascript et si elle n'était pas présente dans la page, faire une redirection vers la page d'accueil

    tout ceci lancé par une fonction body onload

    le fichier js appelé :
    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
       function verifmain()
       {
        if (document.getElementsByTagName('main')[0]){
     
                }
                else {
                   window.location.href="../index.php";
     
                }
       }
     
     
     
     
     
          function loadmain(){
              window.addEventListener("load",verifmain(),true); 
     
     
     
          }
    ma page php de contenu
    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
    25
    26
    27
    28
    29
    <?php
    session_start();
     
     
    if(isset($_SESSION['pseudo']) && isset($_SESSION['pwd'])){
     
    }
     
     else {
     
        header('location: ../index.php');
     }
     ?>
     
     
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<title>contenu1</title>
    <meta charset="UTF-8" />
    <script src="../jscript/jscriptmain.js"></script>
     
    </head>	
    <body onload="loadmain();">
               contenu1 test
     
    	</body>
    </html>
    j'ai donc une double vérification : pour l'accès à la page il faut être connecté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    session_start();
     
     
    if(isset($_SESSION['nom']) && isset($_SESSION['motdepasse'])){
     
    }
     
     else {
     
        header('location: ../index.php');
     }
     ?>
    et ensuite même connecté, on ne peut ouvrir la page directement grâce à la vérification javascript

    Je te remercie pour ton aide Jreaux

    je teste dans le temps et repasse en cas de soucis, l'idée de la variable session est bonne aussi je pense, je verrai si ce que j'ai fait tient le coup dans le temps ;-)

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

Discussions similaires

  1. [WD17] ActiveX Web Browser : Empêcher l'affichage d'une page
    Par e.haefele dans le forum WinDev
    Réponses: 5
    Dernier message: 28/10/2013, 18h11
  2. Forcer l'affichage d'une page dans un cadre
    Par Thcan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/11/2005, 10h58
  3. Empecher l'affichage d'une page hors popup
    Par cyber6ou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/10/2005, 18h49
  4. pb affichage d'une page sous linux
    Par fessebleu dans le forum Langage
    Réponses: 6
    Dernier message: 27/09/2005, 14h05
  5. [texte] gestion de l'affichage d'une page
    Par guy2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 10/07/2005, 18h37

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