Voici donc une petite classe qui peut se réveler fort utile, elle permet de gerer des pseudos frames (index.php?page=Test) mais sous forme de rewriting dont la structure est lesite.com/module/id-page-titre.html
<?php
class Page
{
private $defaultPage;
private $modules;
private $path;
public function __construct($defaultPage, $path)
{
//Page défault peu s'adapter en fonction d'un module
$this->defaultPage = $default;
$this->path = $path;
$this->modules = array
(
//Ensemble des modules
"Accueil" => array("titre" => "page d'Accueil", "url" => $this->path,"/Default/index.php", "dependance" => false, "niveau" => 5),
"Test" => array("titre" => "page de Test", "url" => $this->path,"/Test/index.php", "dependance" => "Test-2", "niveau" => 1),
"Test-2" => array("titre" => "page de Test n°2", "url" => $this->path,"/Test2/index.php", "dependance" => false, "niveau" => 2)
);
$_SESSION['modules'] = serialize($this->modules);
}
public function parseUrl()
{
$modules = unserialize($_SESSION['modules']);
if(isset($_GET['rewrite']))
{
//Si il y'a rewriting
$parseUrl = $_SERVER['REQUEST_URI'];
$parsage = explode("/", $parseUrl);
if(count($parsage) >= 3)
{
//Si la page n'est pas par défaut
$moduleCompl = explode("-", $parsage[1]);
$id = $moduleCompl[0];
if(count($moduleCompl) >= 3 && is_int($moduleCompl[1]))
{
$pageNumero = $moduleCompl[1];
$titre = $moduleCompl[2];
}
else
{
$titre = $moduleCompl[1];
$pageNumero = false;
}
}
$titre = str_replace(".html", "", $titre);
$moduleCharge = $parsage[0];
$tableauDuModule = array("module" => $moduleCharge, "id" => $id, "page" => $pageNumero, "titre" => $titre);
return $tableauDuModule;
}
$titre = false;
$moduleCharge = (isset($_GET['page'])) ? $_GET['page'] : $this->defaultPage;
$id = (isset($_GET['id'])) ? $_GET['id'] : false;
$tableauDuModule = array("module" => $moduleCharge, "id" => $id, "page" => $pageNumero, "titre" => $titre);
return $tableauDuModule;
}
public function autorisation()
{
$moduleDatas = parseUrl();
$modules = getAllModules();
if(array_key_exists($moduleDatas['module'], $modules))
{
return true;
}
return false;
}
public function getFilDarianne()
{
$modules = getAllModules();
$moduleDatas = parseUrl();
$autorisation = autorisation();
if($autorisation)
{
$fil = $modules["Accueil"]["titre"];
for($i = 1; $i <= $modules["Accueil"]["niveau"])
{
foreach($modules as $cle => $valeur)
{
if($valeur["dependance"] == $moduleDatas["module"] && $valeur["niveau"] == $i) $fil .= " - ",$valeur["titre"];
}
}
else
{
$fil = $modules["Accueil"]["titre"];
}
echo $fil;
}
public function getAllModules()
{
return unserialize($_SESSION['modules']);
}
public function getTitle()
{
$moduleDatas = parseUrl();
$autorisation = autorisation();
if($autorisation)
{
return $moduleDatas["module"];
}
return $this->defaultPage;
}
public function getPage()
{
$moduleDatas = parseUrl();
$autorisation = autorisation();
$_SESSION['moduleTable'] = serialize($moduleDatas);
if($autorisation)
{
include $this->path,'/',$moduleDatas['module'],'/index.php';
}
else{ include $this->path,'/',$this->defaultPage,'/index.php'; }
}
}
?>
Avec un HTACCES
ErrorDocument 404 VOTRESITEINTERNET/index.php?rewrite=true
Cette class n'est pas totalement finie mais peut être un bon début