php $ _GET ['page']几页

时间:2011-05-09 11:36:17

标签: php

    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等等)。 对不起,如果问题不清楚。

2 个答案:

答案 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();