Giorno PHPisti

ho sempre ritenuto di aver eseguito controlli relativamente sicuri sui valori passati con GET ma oggi il Membro Senior DLLiano mi ha creato un errore 500 su Apache. Non potete immaginare che figura

Allora dal menu passo i parametri con GET

codice:
HOMEPAGE -> index.php?page=home
NEWS        -> index.php?page=news
FOTO        -> index.php?page=foto
Adesso nell'index.php eseguo i controlli
Codice PHP:
// Lista di tutte le pagine del sito
$all_pages = array('home','news','foto');

// Prelevazione valore passato tramite GET
$page = isset($_GET['page']) ? $_GET['page'] : 'home'
Ora devo controllare se $page è contenuto in $all_pages. Per farlo utilizzo la funzione array_search

Codice PHP:
if(array_search($page$all_pages) === FALSE) {
        
$page 'home';

Con gli script precedenti ho identificato TUTTI i casi:
-> Se $page non esiste allora $page = 'home'
-> Se $page esiste ed è uguale a un valore di $all_pages allora $page resta invariata
-> Se $page esiste ed è diversa da un valore di $all_pages allora $page = 'home'

Dopo importo tutto con
Codice PHP:
include($page .'.php'); 
Ho provato anche a modificare la querystring sul valore di page ed effettivamente lo script funziona!

Però non capisco una cosa: se metto sull'indirizzo
index.php?page=../
Mi restituisce un errore 500

Non mi torna sta roba! ../ resta sempre una stringa non contenuta nell'array $all_pages quindi non dovrebbe darmi errore e invece me lo da! Come mai ?
:master: :master: