Un saluto a tutti. Sono Alessandro Fulciniti, l' autore dell' articolo sul template in PHP di PRO (ora sospeso per revisione) di cui si è parlato anche qui in un paio di thread. La questione è che ero all' oscuro della possibilità di includere pagine remote attraverso la variabile get.
Entro breve verrà pubblicato l' articolo con una rettifica e il codice rivisto. Mi sono documentato un po' in rete e in una mailing list. La soluzione che vorrei adottare dovrebbe essere piuttosto sicura ma anche a prova di newbie di php, così vorrei chiedere un parere. Ecco il codice di index.php rivisto:
Codice PHP:
<? include("header.php");
include("menu.php");
$p="main.php"; //pagina di default per i contenuti centrali
if(isset($_GET['page'])){ //pagina passata via parametro
$p=substr($_GET['page'],30);
if(preg_match("#^[a-z0-9_]+$#i",$p) && $p!="index" && file_exists($p.".php"))
$p=$p.".php";
else
$p="error.php"; //pagina di errore
}
include($p);
include("footer.php"); ?>
Introducendo il vincolo che la variabile x l' inclusione contenga solo lettere e numeri, che non sia lunga + di trenta caratteri e che l' estensione ".php" venga aggiunta da php stesso, e che il file sia nella root si dovrebbe essere abbastanza sicuri.
Inoltre, ho notato che se index include index il browser (e immaginio anche il server) va in crash, quindi ho aggiunto anche la verifica su index.
So che una tra le soluzioni più sicure è elencare in un array le pagine ammesse per l' inclusione, ma risulta a parer mio poco pratica, soprattutto le pagine sono molte.
Grazie in anticipo a chi vorrà intervenire.
Alessandro Fulciniti