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
Adesso nell'index.php eseguo i controllicodice:HOMEPAGE -> index.php?page=home NEWS -> index.php?page=news FOTO -> index.php?page=foto
Ora devo controllare se $page è contenuto in $all_pages. Per farlo utilizzo la funzione array_searchCodice 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';
Con gli script precedenti ho identificato TUTTI i casi:Codice PHP:
if(array_search($page, $all_pages) === FALSE) {
$page = 'home';
}
-> 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
Ho provato anche a modificare la querystring sul valore di page ed effettivamente lo script funziona!Codice PHP:
include($page .'.php');
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: