#php
#php
Вопрос:
if (!$_GET['page'] || preg_match('/W/', $_GET['page']) || !file_exists('./intl/tpl/tpl_source/' . $_GET['page'] . '.tpl'))
$_GET['page'] = 'index';
if ($_GET['page'] amp;amp; $_GET['page'] != 'index') {
$smarty->assign("pg_" . $_GET['page'], true);
$smarty->display($_GET['page'] . ".tpl");
die();
}
Этот код позволяет мне открыть любую страницу (?page =1, ?page = 2 и так далее, также это означает, что если страница не отображается, откройте index)
но мне нужно указать, какой пользователь может открыть, поэтому код должен выглядеть следующим образом:
if ($_GET['page'] = '21' || preg_match('/W/', $_GET['page']) || file_exists('./intl/tpl/tpl_source/' . $_GET['page'] . '.tpl')) {
//my stuff
}
Короче говоря, мне нужно указать, какие адреса пользователь может открыть с помощью $ _GET[‘страница’] (?страница = 21 ?страница = 22 и так далее).
Извините, если вопрос не ясен.
Ответ №1:
Вы можете упростить свой код, используя приведение типов (для фильтрации!) и более простой список разрешенных страниц:
$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();
Ответ №2:
Вы можете создать белый список:
var $pages = array(
21 => true,
22 => true
);
// or
var $pages = array_flip(array(21, 22));
и проверьте, есть ли страница там:
if(isset($pages[$_GET['page']])) {
}