PHP: include en difficulté

Fermé
mjnetservice Messages postés 3 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 29 octobre 2007 - 29 oct. 2007 à 15:41
mjnetservice Messages postés 3 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 29 octobre 2007 - 29 oct. 2007 à 21:00
Bonjour,

Je suis en train de monter mon site perso en php.
J'ai créé une page "index.php" englobant des includes des zones: 'partie1.php' (haut) 'partie2.php' (bas) et, pour la partie centrale, elle est gérée par un include de sécurité.
Voici le code:

<body>

<!-- -------------------------- haut ------------------------------ !-->
<?php
include("theme/partie1.php"); // on appelle le fichier
?>

<!-- -------------------------- centre ---------------------------- !-->
<?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 = 'theme/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($page, ENT_QUOTES);

//Si on a des répertoires que l'on ne veut pas accéder, un les liste ici :
$repProteger=array('admin', 'commun', 'images', 'include', 'theme', 'popup');
$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.");
?>

<!-- ------------------------ bas -------------------------------- !-->
<?php
include("theme/partie2.php"); // on appelle le fichier
?>

</body>

Mon souci:

La page 'accueil.php' apparaît bien dans la partie centrale dès l'ouverture du site. Cependant, lorsque je désire charger une autre page, à la place, rien ne se produit; le chemin étant bien spécifié dans la barre url du site.
La page appelée est: "page1.php' (se situant à la racine du site dans le dossier "charger").
Cette action d'appel est encodée dans 'partie1.php'; dont voici le code:

<body>
<div id="global">
<div id="header"></div>
<div id="barre">
<div id="search">
zzz
</div>
<div id="menuhrzHaut">
<ul id="menuhrz">
<li><a href="index.php" title="Accueil">Retour à l'accueil</a> - </li>
<li><a href="index.php?page=charger/page1" title="page1">Mon C.V.</a> - </li>
<li><a href="">Contact</a> - </li>
<li><a href="">Espace privé</a></li>
</ul>
</div>
</div>
<div id="contentarea">
<div id="coleft"><a href="">test 1</a></div>

Ma question: Où se situe le problème ?

Merci d'avance pour votre aide précieuse.

Cordialement...
A voir également:

2 réponses

Bonjour à toi.
Bon, Honnêtement j'ai pas trop cherché à décrypter ton code parce qu'il me semble un peu compliqué pour ce que tu comptes faire.

D'apres ce que j'ai compris : tu as 1 page index.php, à laquelle tu joints une entête en include et dont tu gères le contenu dynamiquement par des GET....

OK... pourquoi pas... mais cette méthode me pose 2 problèmes :
1/ La navigation entre tes pages (chose qui doit être user-friendly et simple pour un site...) apparaît très clairement dans les URL. C'est un truc qui me dérange un peu parce que l'utilisateur n'a pas à voir la "machinerie" de ce que tu as fait, et que tes URLs sont du coup ultra-complexes, même si t'as pas besoin de faire de requêtes sur une BDD ou de traitements avancés. De plus :

2/ Faut penser à toutes les failles et les conneries que l'utilisateur peut tenter de taper dans l'URL... ça alourdit ton code, c'est pas sûr que t'aies pensé à tout, et tu risques de te paumer dans ton code.

Je connais un petit peu le sujet, j'ai du pondre un ou 2 sites en faisant comme ça, et soit on me disait que les addresses des pages dans les favoris étaient ultramoches, soit on me montrait régulièrement comment on peut bouziller l'affichage de mon site.

Heureusement je ne vais pas faire que critiquer ta méthode, mais te proposer une solution :

Pourquoi ne pas faire autant de pages php que nécessaire ?
C'est à dire que tu orientes ta page sur le cadre central et tu inclus juste un en-tête et un pied de page.
Par exemple : une page "accueil.php" qui contiendrait

<?include "header.php"?>

<div id="cadre central">
Tout le contenu du cadre "accueil"
</div>

<?include "footer.php"?>

Sachant que le header et le footer sont communs à toutes tes pages....
Ca te fait moins de failles à prévoir, et tes urls apparaissent plus clairement....

Bon je sais, j'ai pas répondu directement à ta question, mais penses-y, tu auras peut-être moins de soucis.
0
mjnetservice Messages postés 3 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2007 à 21:00
Bonsoir NoHar,

Merci d'avoir répondu rapidement à ma demande. Pour moi, bien qu'à ce stade de l'include ce ne soit pas compliqué pour les initiés, cette étape m'est importante dans ma progression en PHP.
D'après ce que je comprend par le dernier conseil que tu as formulé, ma page "accueil.php" contiendrait les mêmes éléments que ma page "index.php"; à ceci près, que ma partie centrale ne contiendrait plus un code de sécurité (apparement complexe) mais simplement la structure du visule de la page d'accueil.

Cependant, comment par le biais de ma navigation puis-je faire en sorte que ma "page1.php" apparaisse au centre à la place de ma partie 'accueil'. Dois-je reconstruire une autre "page1.php" avec la même composition de base de la page "accueil.php"; à ceci près que le contenu centrale sera bien évidemment différent.
Dans ce cas, n'y aura-t-il pas un effet de lourdeur au site du fait qu'il devra recharger les éléments de chaque pages appelées ?

A mon sens, ton conseil me semble évidement plus simple mais n'y-a-t-il pas un moyen de créer des pages dites .php ne contenant que ce qui doit apparaître au centre de mon site ? C'est alors que l'include pourrait être intéressant.

Je suis novice en la matière... Pardonnes-moi pour ces questions quelques peu naïves.

Merci en tout cas pour ton aide précieuse dans ce domaine.

Amiczlement,
0