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.