8721 sujets

Développement web côté serveur, CMS

Bonjours voici mon code :

<?php include("incs/home.php"); ?>

<?php if (isset($_GET['page'])) {
			$page= 'incs/pages/'.$_GET['page'].'.php';
			if(file_exists($page)) {
				include($page);
			}
			else {
				include('incs/pages/404.php');
			}
		}
		?>


Par logique la page homme s'affiche sur toutes les pages mais je ne sais pas comment changer mon code pour qu'elle ne s'affiche plus une fois une nouvelle page chargée.

Merci de votre aide Smiley smile
Modifié par 6l20 (17 Jul 2013 - 13:56)
Bonjour,

Je n'ai pas bien compris la question mais en tout cas tu as une grosse faille de sécurité. On ne doit jamais utiliser les valeurs POST ou GET directement pour charger un fichier.

Imaginons qu'il y ai un fichier 'incs/secret.txt' avec par exemple des codes d'accès ou autre.

Il suffirait d'appeler la page avec ?page=../secret.txt pour afficher le fichier 'secret.txt"
Pour répondre à la question, je dirais qu'un simple switch serait bien plus sûr.

switch( $_GET['page'] )
{
   case "ma_page_1":
     include "page1.php";
     break;

   case "ma_page_2":
   case "une_autre_page_2":
   case "encore_une_autre_page_2":
     include "page2.php";
     break;

   default: include "error.php";
}


Mais une bonne sécurité ne s'arrête pas là.

D'une façon générale, je te conseille de te tourner vers un framework, c'est très bien pour apprendre à faire une bonne architecture.