if (!$_GET['page'] || preg_match('/\W/', $_GET['page']) || !file_exists('./intl/tpl/tpl_source/' . $_GET['page'] . '.tpl'))
$_GET['page'] = 'index';
if ($_GET['page'] && $_GET['page'] != 'index') {
$smarty->assign("pg_" . $_GET['page'], true);
$smarty->display($_GET['page'] . ".tpl");
die();
}
这段代码让我打开任何页面(?page = 1,?page = 2等等,如果没有页面给出,也就是打开索引的意思)
但我需要指定哪个用户可以打开,因此,代码应如下所示:
if ($_GET['page'] = '21' || preg_match('/\W/', $_GET['page']) || file_exists('./intl/tpl/tpl_source/' . $_GET['page'] . '.tpl')) {
//my stuff
}
简而言之,我需要指定用户可以使用$ _GET ['page']打开哪些地址(?page = 21?page = 22等等)。 对不起,如果问题不清楚。
答案 0 :(得分:0)
您可以创建一个白名单:
var $pages = array(
21 => true,
22 => true
);
// or
var $pages = array_flip(array(21, 22));
并测试页面是否在那里:
if(isset($pages[$_GET['page']])) {
}
答案 1 :(得分:0)
您可以使用类型转换(用于过滤!)和更简单的允许页面列表来简化代码:
$allowed_pages = array(1, 12, 21, 25, 32);
$page = (int)$_GET["page"]
and in_array($page, $allowed_pages)
and file_exists("./intl/tpl/tpl_source/$page.tpl")
or $page = "index";
$smarty->assign("pg_$page", true);
$smarty->display("$page.tpl");
die();