Page 1 sur 1

Prob ob_start () et url rewriting

Posté : 12 mars 2010, 10:17
par Tonyloup35
Bonjour à tous,

Je souhaite mettre en ligne un site de type annuaire, seulement j'ai un problème avec la fonction ob_start et l'URL rewriting.
En effet, à l'index de mon site, je charge un template avec le design entier et vient intégrer la partie content avec ob_start().
La je fais un certain nombre de vérifications pour éviter le passage de données bidon en GET.
Entre autre, je vérifie que l'argument ?p="page" appartienne bien à un de mes contenus.
Seulement, quand je suis sur ma page index.php, et que je fais passer certaines infos en GET, comme le choix d'une région et d'un département, ( ?region=votrerégion&p=votredep), et que je l'optimise pour le référencement avec l'url rewriting, j'obtiens www.monsite.fr/votreregion/votredep
Et la, mon code de l'index vérifie si la page votreregion se trouve dans mon dossier content, et m'affiche un message d'erreur.

Pour le choix de la région et du dep j'aimerais rester sur la page index puisqu'ils seront sélectionnés grâce à une animation flash, seulement comment contourner le prob de ob_start???
Ou comment réécrire l'url rewriting???

Voici mon code de la page index.php:

Merci beaucoup!
<?php
$sites = array (
	'plan',
	'inscription',
	'traitement-inscription',
	'region',
	'departement',
	'partenaires-boule',
	'plan-site-audition',
	'mentions-optique',	
);

$page=@$_REQUEST["page"];	
				
if($page=="")
	$page="accueil";

if( isset($_GET['page']) &&
    in_array($_GET['page'],$sites) &&
    file_exists("content/".$_GET['page'].".php") ){
		ob_start();
		include "content/".$_GET["page"].".php";
		$content = ob_get_contents();
		ob_end_clean();

		include "template.php";
}

elseif(!isset($_GET["page"])){
	$_GET["page"] = "index";
	ob_start();
	include "content/index.php";
	$content = ob_get_contents();
	ob_end_clean();

	include "template.php";
}

else{
	$_GET["page"] = "404";
	ob_start();
	include "content/404.php";
	$content = ob_get_contents();
	ob_end_clean();

	include "template.php";
}

?>

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 17:20
par Dr@ke
Déjà ceci, si je peux me permettre évidemment :wink:
$page=@$_REQUEST["page"];      
                               
if($page=="")
        $page="accueil";
Serait mieux ainsi, à mon avis:
$page = (isset($_GET['page'])) ? $_GET['page'] : null;
                               
if(empty($page))
        $page = 'accueil';
faq-tutoriels/expr1-expr2-expr3-operate ... 14111.html

Mais ceci n'a rien avoir avec ton soucis :)

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 18:18
par Dr@ke
Sinon, autre petit détail:
Pourquoi ne pas mettre ton ob_end_clean(); sous include "template.php"; ?
...

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 18:29
par Tonyloup35
Comment ça?? Je ne vois pas comment faire??

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 18:33
par Dr@ke
Inclure aussi ton template.php dans l'ob_start().

Sinon je ne comprends pas ceci:
$page=@$_REQUEST["page"];      
                               
if($page=="")
        $page="accueil";
avec ensuite ceci:
elseif(!isset($_GET["page"])){
        $_GET["page"] = "index";
        ob_start();
        include "content/index.php";
        $content = ob_get_contents();
        ob_end_clean();

        include "template.php";
}
Vue que accueil tu ne le traites pas ensuite...
Sinon pour reproduire la même chose, cela serait:
$page = (isset($_GET['page'])) ? $_GET['page'] : null;
                               
if(isset($page) && empty($page))
        $page = 'accueil';
Bien que je pense qu'il y a un soucis ici :wink:

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 18:43
par Tonyloup35
Je ne connais pas bien cette fonction là, je l''ai prise sur un forum... quel serait le changement en incluant le template.php?? Et comment l'inclure?

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 18:51
par Dr@ke
c'est censé mettre dans un buffer tout le html, template.php étant surement du html, c'est donc censé être dans le buffer aussi.

http://www.siteduzero.com/tutoriel-3-38 ... n-php.html

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 23:16
par Tonyloup35
Merci pour tes conseils, j'ai bien fait passer le template.php dans le buffer.

Seulement je pense que le problème vient de l'url rewriting:

Quand il y a: www.monsite.fr/inscription => ça donne www.monsite.fr/?page=inscription
Et quand il y a : www.monsite.fr/inscription/region/departement => ça correspond à http://www.monsite.fr/?page=inscription ... epartement
Seulement quand je fais passer en GET mes variables $region et $departement, l'url rewriting pense que je lui fais passer $page et $region:
on a: www.monsite.fr/region/departement => qui donne: www.monsite.fr/?page=region&region=departement.

Et la ça bug puisque la page n'est pas reconnu, la page region.php n'existant pas.

Et là je ne vois pas du tout comment faire...

Re: Prob ob_start () et url rewriting

Posté : 12 mars 2010, 23:30
par Dr@ke