PHP gevorderde |
|
Zou ik oplossen met een array en recursie (functie die zichzelf aanroept):
$toegelaten_paginas = array('pagina1', 'pagina2',
'pagina3' => array('pagina3a', 'pagina3b'));
function valid_page($pages, $allowed)
{
switch (gettype($pages)) {
//splitsen indien nodig
case 'string':
$pages = explode('/', $pages);
case 'array':
break;
default:
return false;
}
if (!is_array($allowed)) {
return false;
}
$page = array_shift($pages);
if ($allowed != $pages) {
return false; //Geen match
}
//zijn er nog elementen over?
if(empty($pages)) {
return true;
} else {
return valid_page($pages, $allowed[$page]); //zichzelf aanroepen
}
}
valid_page($_GET['pagina'], $toegelaten_paginas);
$toegelaten_paginas = array('pagina1', 'pagina2', 'pagina3' => array('pagina3a', 'pagina3b')); function valid_page($pages, $allowed) { //splitsen indien nodig case 'string': case 'array': break; default: return false; } return false; } if ($allowed != $pages) { return false; //Geen match } //zijn er nog elementen over? return true; } else { return valid_page($pages, $allowed[$page]); //zichzelf aanroepen } } valid_page($_GET['pagina'], $toegelaten_paginas);
nota: pagina3 is wel een array, maar de pagina zou volgens de code bestaan
Code is wel niet getest, eerder rap geschreven
Ik denk zelfs dat er beter methodes zijn
fouten? geef een seintje
edit: ty henver, code is wat bijgewerkt en nagekeken |