Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

Les include PHP ou pseudo frame PHP - Cours php

Les include PHP ou pseudo frame PHP

Les include PHP ou pseudo frame PHP


Les include() PHP
(Php Pseudo Frames)

Programmer en PHP sans include, c'est que à mon avis, vous ne programmer rien du tout oui! La fonction require() et include() sert à inclure un autre fichier. En générale, on s'en plus pour créer un code plus lisible. Genre, on écrit toute nos fonctions sur une page, et, des que l'on en aura besoin, on l'appelle.

On s'en sert aussi pour faire comme les frames HTML, appellez communément "PHP pseudo Frames" et c'est là ou je veut en venir ...

Le principe :

On fais passer un paramettre dans l'url et on inclus une page en fonction de sa valeur

Voici un exemple de pseudo frames NON sécurisé :

créer le fichier index.php :
<table><tr><td>
<a href="index.php?page=page1.php">Menu1</a>
<a href="index.php?page=page2.php">Menu2</a>
</td><td>
<?php
if($_GET[page]){
  include(
$_GET['page']);
}
?>


Créer ensuite une page "page1.php" ainsi qu'une page "page2.php" que vous mettrez dans le MEME répertoire que index.php.
Allez sur la page index.php, et cliquez sur un des liens. Normalement, si tout c'est bien passé, la page demandé devrai apparaitre.

Tout ceci est très bien, si ce n'est que sur internet, créer un site web en PHP demande TOUJOURS de se renseigner sur la sécurité. C'est assès contraignant au début mais je vous assure que ceci vaut le temps qu'on y passe.

Donc, vous vous en serez douté, dans l'exemple cité audessus, y'a ce qu'on appelle une ENORME faille de sécurité. Tapé ceci dans votre navigateur : index.php?page=http://www.google.fr/index.html

Surprise, vous allez vous retrouvez avec la page de google inclus dans votre site !

Ceci en soit n'est pas grave, mais, imaginons que quelqu'un essaye de faire pareil une page avec un code PHP ou autre malicieux ! ceci entrainerai dans le meilleur des cas à un avertissement de la part de la personne qui a découvert la faille, au pire des cas à la suppression du site en entier voir du serveur s'il est mal configurer.

Pour combler cette faille nous devons vérifier si la page demandé existe belle et bien sur le serveur.


Exemple de pseudo frame SECURISE ! :

Le nouveau code corrigé de la page index.php :
(vous pouvez aussi créer la page par defaut (ici accueil.php))
<html>
<head>
  <title>Pseudo Frame PHP</title>
</head>
<body>
<h1>Pseudo Frame PHP</h1>
<ul>
  <li><a href="./index.php">Accueil</a></Li>
  <li><a href="./index.php?page=page1">Page 1</a></Li>
  <li><a href="./index.php?page=page2">Page 2</a></Li>
</ul>
<div>
<?php
// si votre site n'est pas à la racine du serveur, vous pouvez avoir besoin de dire OU se trouve la page index.php
$_chemin '/';

// la page par defaut, si les valeurs fournies sont incorrect : 
$page_defaut 'accueil';

// on recupere la valeur passé dans l'url : 
if(isset($_GET["page"]))
  
$page=$_GET["page"];
else
  
$page=$page_defaut;

//Enlevons les caractères html
$page=htmlentities($pageENT_QUOTES);

//Si on a des répertoires que l'on ne veut pas accéder, un les liste ici :
$repProteger=array('include''libs''admin');
$temp=split('/',$page);
if(
in_array($temp[0],$repProteger)){ $page=$page_defaut; }

//Si jamais qq tente de penetre dans le serveur en utilisant des ./ ou :/
if(eregi("(:/)|(./)",$page)){ $page=$page_defaut; }

//Testons si la page demandé existe bien en local
if(file_exists($_SERVER["DOCUMENT_ROOT"].$_chemin.'/'.$page.'.php'))
  include(
$page.'.php');
elseif(
file_exists($page_defaut.'.php'))
  include(
$page_defaut.'.php');
else
  exit(
"Erreur : La page par defaut n'existe pas.");
?>
</div>
</body>
</html>

Exemple : Pseudo Frame PHP


Quelques exlications
Tout d'abord, on défini une page qui sera utilisé sir les valeurs passé dans l'url de son pas correct: $page_defaut

1) On vérifie si la variable $page existe bien. Si elle n'existe pas, on lui donne la valeur par defaut ($page_defaut).

2) On enlève tout code html/javascript que quelqu'un pourrais faire passer dans l'url.

3) On vérifi si la variable $page ne contiendrai pas de ":/" ... si oui, on redéfini la variable à la valeur par defaut ($page_defaut).

4) Ensuite, ici, vous pourrez mettre les répertoire auquel vous ne voulais pas donner accés. Facultatif.

5) Si jamais quelqu'un tente de lire les fichiers de votre site en amont de l'endroit actuel, on défini la page par defaut ($page_defaut).

6) Puis, finalement, on teste si le fichier demandé existe bien sur le serveur. En utilisant $DOCUMENT_ROOT, on est donc sur que la vérification ce fais sur le serveur et non sur un autre site.


Si vous avez des questions ou des idées pour améliré cette page, faite nous en part sur le forum à en cliquand ici :
Pseudo Frames PHP

Le 12/05/2008 par Sky
http://www.graphiks.net




Les commentaires
  • Le 03-05-2008, phebeth a écrit :
    J'ai testé ce script mais cela m'a donné pas mal de peine car je n'arrivais pas à changer les pages. Après avoir recherché avec méthode j'ai remarqué que c'est le test du serveur qui me donne du fil à retordre. J'ai supprimé ce passage:($_SERVER["DOCUMENT_ROOT"].$_chemin.'/') et j'ai laissé "if(file_exists($page.'.php'))include($page.'.php');) et ça marche mais sans le contrôle du serveur. Je suppose qu'il faut indiquer le nom de mon de mon serveur local...mais comment? mon URL local est "http://localhost/sitejoomla/index.php" je suis encore néophyte... svp un petit coup d'pouce. Merci

  •  
  • Le 06-03-2006, Sky a écrit :
    Je vais aussi mettre une version simplifié peut etre :)

  •  
  • Le 05-03-2006, ziko a écrit :
    trop dur we vrement trop dur en fait la 2eme mothode c'est encore plus pratique
    en tous cas merci pour les explication

  •  

Nom :

Texte :

Recopier ce code : ici

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net