NewbieContest

Programmation => Langages Web => Discussion démarrée par: darksp le 10 Juin 2007 à 14:38:13



Titre: [php] question sur l'include
Posté par: darksp le 10 Juin 2007 à 14:38:13
Salut a tous. Voila j'ai un site qui utilise l'include pour ajouter au chaque page son contenu. Seulement voila, je souhaite faire des dossiers sur le serveur.

par exemple un dossier "tuto", "definitions" etc

Pour faire ceci je me sers de l'include de cette facon :

Code:
<?php  
switch($_GET['page'])
{

case'index':
include("intro.php");
break;

case 'tuto_1':
include("tutoriels/tuto1.php");
break;

default:
include("404.php");
break;


}
?>
Donc quand le nombre de pages devient consequent c'est plutot génant...

j'avais donc penser a verifier si la page était sur le serveur puis a inclure directement ce qui est passé par l'url. cependant je ne peut pas gerer les dossiers. Et je ne desire pas passer par l'url des "page=tutoriels/tuto1" mais plutot des "page=tuto1"

Comment je peut faire? merci a tous :)


Titre: [php] question sur l'include
Posté par: the lsd le 10 Juin 2007 à 18:13:51
tu peux faire ca avec un tableau associatif du genre :

Nom ->Valeur
index -> intro.php
tuto1 -> tutoriel/tuto1.php

et apres tu fais un
if (array_key_exist ($_GET['page']))
{
include ($tableau[$_GET['page']) ;
}
else
{
include ('intro.php') ;
}

$tableau etant le tableau que tu as crée.

Enjoy

The lsd


Titre: [php] question sur l'include
Posté par: darksp le 11 Juin 2007 à 12:06:55
je vais voir ca. merci beaucoup :)


Titre: [php] question sur l'include
Posté par: NiklosKoda le 11 Juin 2007 à 15:44:05
si tu choisis cette solution pense à vérifier si $_GET['page'] n'est pas un tableau,
(ce que l'on obtient de la manière suivante : fichier.php?page[]=plop)
auquel cas, avec le code actuel, tu aurais un "Full Path Disclosure".
En effet l'erreur engendrée serait la suivante :

Citation
Warning: array_key_exists() [function.array-key-exists]: The first argument should be either a string or an integer in /the/full/path/is/here/fichier.php on line X
Pense donc à faire :
Code:
if(is_array($_GET['page']))
    echo 'erreur';
else
    // traitement de la demande