Kullanıcı girişi dahil

4 Cevap

Bu oldukça lanetlemek güvenli değil mi? Ben kaçırdım bir şey mi?

$page = sprintf("%s/%s.php", "pages", $_GET['page']);
if (file_exists($page)) {
	include $page;
}
else {
	echo "The page '$page' does not exist =(";
}

(Evet bunu kullanabilirsiniz)

4 Cevap

Bunu yapmak için "iyi" bir şekilde sayfaların bir dizi var, o zaman böyle bir şey yapın:

$page = $_GET['page'] . '.php';
if(in_array($page, $all_pages)) {
    include('pages/' . $page);
}

Kolayca bu gibi bir şey yaparak bütün sayfaların bir listesini alabilir:

$all_pages = glob('pages/*.php');

Dokümantasyon: in_array , glob

Bir kullanıcı keyfi onlar gibi hissediyorum ne olursa olsun sayfa yükleyebilirsiniz çünkü güvensiz.

Eğer emin değilseniz hiçbir / veya .. $_GET['page'] olarak, ve ziyaretçi pages herhangi bir php dosyasını görüntülemek için izin verildiğini dir, i iyi olduğunu düşünüyorum.

Besleniyor hiçbir yol bilgisi olmadığından emin olmak için basename () kullanın:

$page = sprintf("%s/%s.php", "pages", basename($_GET['page']));
if (file_exists($page)) {
        include $page;
}
else {
        echo "The page '$page' does not exist =(";
}