Réponse acceptée !
Alors avant tout remplace tes <? par des <?php ça respectera plus
les standard (en cas de short_open_tag à off) et utilise
$_GET["ma_var"] pour les variables transmise via l'url... plutot que
$ma_var... .. .
ensuite il est normal que ta page par défaut ne soit pas incluse car
comme l'indique la notice au moment de ta condition ta variable
n'existe pas... elle ne peut donc même pas être égale à rien... .. .
tu met $page = ''; au tout début et ce sera ok... mais par contre
niveau sécu y a rien... tu fais quoi si je tape
http://www.tonsite.ext/index.php?page=http://www.monsite.ext/un_script_pas_gentil_du_tout.php
et ce n'est qu'un exemple... si tu utilise une base de données on peut
faire de bonne injections sql aussi...et j'en passe... .. .
Un conseil fais plutot quelque chose style...
// déja on initialise la var
if(isset($_GET["page"])) {
$page = trim($_GET["page"]);
} else {
$page = '';
}
//si elle est appelée et quelle est vide
if(isset($page) && $page == '' ) {
$page = 'page_defaut';
}
// on vérifie que la requete ne contient pas de caractère interdit => activ scripting...
// on accepte donc que les characteres alpha numériques ainsi que les . - _ rien d'autre
$page = htmlspecialchars($page);
$masque = "^[_a-zA-Z0-9.-]+$";
if(!ereg($masque, $page) {
$page = 'page_defaut';
}
// on vérifie que la page existe bien sait on jamais
if(!file_exists("rep".$page.".php") {
$page = 'not_found';
}
////// à partir de là deux solutions//////////
/// tu as pas 15 000 pages dans ce cas on fait un switch
switch($page) {
case "not_found" :
include("rep/error.php");
break;
case "page_par_defaut" :
include("rep/defaut.php");
break;
case "mapage1" :
include("rep/bla_bla.php");
break;
case "mapage2" :
include("rep/pwet_pwet.php");
break;
}
// tu peux en mettre autant que tu veux mais si tu en
// a beaucoup c'est plus chiant donc tu peux faire à la place...
// on fait un tableau avec les pages autorisées
$page_list = array("page1", "page2", "page3", "page4", "page5",
"page10", "page20", "page50", "page75", "page_defaut", "not_found");
// on vérifie qu'elle est dedans
if (!in_array($page, $page_list)) {
$page = 'page_defaut';
}
// et on inclu notre page
include("rep/".$page.".php");
Comme tu l'aura remarqué l'extension n'est pas renseigné dans la var ce
qui permet de faire le tri et de n'inclure que la bonne extension et
puis c'est plus propre de voir index?page=pwet
Sinon les pages sont dans un repertoire ici nomé rep dans lequel tu met un .htaccess avec dedans
AuthName "admin"
AuthType Basic
<Limit GET POST>
Deny From All
</Limit>
Ce qui empechera l'accès direct au page à tout le monde même toi (toi
tu passera via ftp) ainsi elle ne seront consultable que via l'index.php
Voila... ce code est netement améliorable j'ais fais ça de tête, tu
pourras trouver d'autres trucs pour le fignoler sur ce site (je me suis
d'ailleur "inspiré" d'une source qui est je crois sur ce site
concernant le masque) et sur d'autres site... notament pour ce qui
concerne la sécurité mais c'est déja un peu mieux que celle de ton
code... .. .
Bonne continuation à toi... .. .
@ tchaOo°
l'homme est un loup pour l'homme... .. .