Assume il valore "404"... a questo punto posto anche il pezzo di codice interessato:
Codice PHP:
$allowedPages = array("pag1", "pag2", "pag3");
if (isSet($_GET["page"])) {
$page = $_GET["page"];
//se la pagina richiesta non è disponibile
if (!in_array($page, $allowedPages)) {
$page = "404";
}
}
else {
$page = $defaultPage; //pagina di default
}
Ma il fatto è che il flusso di esecuzione non passa mai quel ramo.
E la cosa sconvolgente è che sebbene $_SESSION['referer'] venga valorizzata a $page (e mantiene questo valore fino alla fine della pagina), nella pagina successiva vale "404" già da dopo session_start();
Questo, come già detto, avviene solo e soltanto per una pagina in particolare (in cui non vi è codice PHP peraltro), mentre per tutte le altre (che saranno circa una decina) funziona alla perfezione.
EDIT: ovviamente quel pezzo di codice si va a sostituire alla banale "$page = $_GET['page']" del codice di esempio del primo post.