Jeżeli ma plików niedużo, to może zostać przy swoim switch, bo file_exists jest niebezpieczne, przynajmniej w tej formie, którą zaproponowałeś wyżej. Trzeba wtedy robić porządną walidację.
Krótki przykład mini acl`a, Twoja funkcja czy_zalogowany:
function czy_zalogowany() {
if(isset($_SESSION['zalogowany']) && $_SESSION['zalogowany']) { return true;
}
return false;
}
<?
$switch = isset($_GET['parent']) ?
$_GET['parent'] : null; $loggedOnly = array('forum'); // tutaj wymieniasz elementy tylko dla zalogowanych if($switch && in_array($switch, $loggedOnly) && !czy_zalogowany
()) {
$switch = 'brak_uprawnien';
}
SWITCH ($switch){
CASE "forum":
INCLUDE 'forum/forum.php';
BREAK;
CASE "brak_uprawnien":
include "tresc_bledu.php"
break;
DEFAULT:
include 'pliki/glowna.php';
BREAK;
}
?>