Maak een voordeur in PHP: redirect alles naar een pagina

Posted at December 17, 2011

In mijn post over het MVC patroon voor PHP applicaties zei ik dat grote systemen altijd een punt hebben waarin een request binnenkomt. Zo kan een CMS een folder simuleren: Een hoop websites hebben een about pagina te vinden op het adres website.nl/about. Nu is er meestal helemaal geen about folder op de webserver van de website maar wordt deze gesimuleerd.

Als je nog een stap verder gaat kan je op deze manier makkelijk en dynamisch nieuwe pagina’s in een database proppen en de request via PHP verwerken. Alle grote systemen werken volgens dit principe.

In mijn mini .htaccess tutorial gaf ik htaccess code waarmee je links naar een bestand kan redirecten:

# rewrite all requests ( /a/b/c/d/ ) to index.php?page=a/b/c/d/
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

Nu kan je in je script checken welke er gevraagd wordt:

$request = explode('/',$_GET['r']);
if ($request[0] == 'about') { 
    maakAboutPagina();
} else {
    // …
}

explode is een functie die een string omtovert tot array, hij hakt hem in stukken op de plekken van de eerste parameter (in dit geval /). Dit is nu nog niet zo handig, maar zodra je met submenu’s gaat werken heb je de globale nav van de lokale nav gescheiden.

Op deze manier heb jij volledige controle over wat er opgevraagd mag worden en wat niet. Nu kan je uitzoeken door $request te checken welke pagina er gevraagd wordt.

Posted at December 17, 2011, under PHP.