Bonjour mesdames et messieurs !
Alors en fait j'ai un petit soucis, ça fait maintenant quelques temps que j'utilise la fonction ob_start() de php pour créer une template sur mon site, alors j'avais utilisé à l'époque le tuto de grafikart
http://www.grafikart.fr/tutoriels/php/decomposer-site-php-obstart-102
Que j'ai réutilisé a chaque nouveau projet, sauf que je rencontre un autre problème je souhaite utiliser l'URL REWRITING afin de créer des url plus sympathiques a mes articles/profils d'utilisateur etc ( surtout que je m'attaque à un petit jeu en PHP et donc j'ai vraiment besoin de ça pour l'interaction entre les utilisateurs )
Mon htaccess se présente comme ceci :
http://pastebin.com/ZfrJeRGQ
Et "l'index" ( qui permet de gérer la template ) comme cela :
http://pastebin.com/sxsiuppR
Sauf que moi je souhaiterai changer mon url, je vous propose donc un exemple
Imaginons que je souhaite changer mon irl de base qui est article?id=1 en article/1
Pour cela je réalise donc la ligne suivante dans mon htaccess :
RewriteRule article/([0-9]+) article.php?id=$1
Mais cela ne fonctionne pas a cause des lignes précédentes utilisé pour l'Ob_Start()
Alors j'aimerai pouvoir combiner les deux ou alors utiliser une autre méthode de "template"
Je m'en remet donc à vous, j'espère vous saurez m'aider à choisir un moyen de réaliser ce que je cherche.
Merci beaucoup.
Bonjour l'ami !
Alors tout d'accord quand un utilisateur appelle une page ses par exemple : index.php?page=ma_page
donc avec .htaccess ont pourrait faire cela :
RewriteEngine On
RewriteRule page/([a-zA-Z0-9]+) index.php?page=$1 [L]
Où
RewriteEngine On
RewriteRule (.*) webroot/$1 [L]
Dans le dossier webroot vous créer un nouveau .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
RewriteRule
Dans le index.php de webroot :
<?php
require('libs/template.php');
$_template = new Template();
$url = isset($_GET'url']) ? $_GET'url'] : null;
$url = rtrim($url, '/');
$url = explode('/', $url);
if(empty($url[0])) {
$page = 'index';
} else {
$page = $url[0];
}
$file = 'template/pages/' . $url[0] . '.php';
if(isset($page) && preg_match("/^[a-z0-9]+$/i", $page)) {
$page = strtolower($url);
if(file_exists($file)) {
$_template->output($page);
} else {
$_template->output('404');
}
} else {
$_template->output($page);
}
fichier libs/template.php
<?php
class Template {
var $layout = 'default';
public function output($file) {
ob_start();
session_start();
require_once('libs/configuration.php');
if(isset($file) && file_exists('template/pages/' . $file . '.php')) {
require_once('template/pages/' . $file. '.php');
} else {
die('Une erreur ses produite [Le fichier : ' . $file. '.php est inexistant].');
}
$content_for_layout = ob_get_clean() . "\r\n";
if(isset($this->layout) && file_exists('template/layouts/' . $this->layout. '.php')) {
require_once('template/layouts/' . $this->layout . '.php');
} else {
die('Une erreur ses produite [Le fichier : ' . $this->layout. '.php est inexistant].');
}
}
}
Voilà.
Ps : Si il y à des erreur ses par ce que je n'est pas tester le code est que j'ai tout marquer dans les balise code.
En espérant vous avoir aider :)
Cordialement.