www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 0314c47a415e9427deb07b9969d9a33afc74c9a1
parent cdf7a1090f6f57fb7fba65df7203246041c98b03
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Wed, 23 Jun 2010 18:55:33 +0200

controleur/page.php utilise maintenant correctement les chemins des pages.

Diffstat:
Mcontroleur/page.php | 20++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/controleur/page.php b/controleur/page.php @@ -4,7 +4,9 @@ require_once("config.php"); // Protocole : http://site/actualités/?nouveau=Le%20titre -// TODO : Constructeur. +// Invariants de sécurité : +// Page::chemin ne contient jamais de chaîne '../' ou autres bizarreries des chemins de fichiers. +// Donc on peut concaténer Page::chemin à un chemin dans le système de fichiers et être sûr d'être dans un sous-dossier. class Page { // article/prop_article @@ -20,26 +22,28 @@ class Page { $this->chemin = $chemin; } + // Renvoie le chemin de la page dans le système de fichiers + private function chemin_fs() { + return concaténer_chemin($config_chemin_base, $this->chemin); + } + public function liste_enfants() { - $lst = scandir($this->chemin); + $lst = scandir($this->chemin_fs()); $lst_enfants = Array(); if ($lst !== false) { foreach ($lst as $k => $v) { - // Construire un objet Page pour chacun (code commun avec Page::enfant(nom)). - $lst_enfants[] = new Page($this->chemin . '/' . $v); // TODO : . '/' . n'est pas portable ! + $lst_enfants[] = $this->enfant($v); } } return $lst_enfants; } public function enfant($nom) { - // Récupéere le sous-dossier "nom" - // Construire un objet Page (code commun avec Page::liste_enfants()). + return new Page($this->chemin . '/' . $nom); // TODO } public function parent() { - // Récupère le dossier parent - // Construire un objet Page (code commun avec Page::enfant(nom)). + return new Page($this->chemin . '/..'); // TODO } public function nouveau($nom) {