2011-05-09 3 views
0
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(); 
} 

이 코드는 나에게 모든 페이지 (? 페이지 = 1,? 페이지 = 2 아무 페이지가 제공하지 않는 경우 등등, 또한, 개방 지수 평균의)

을 열 수 있습니다 ? 내가 사용자가 $ _GET [ '페이지'] (페이지 = 21 열 수있는 주소를 지정할 필요가 짧은에서

if ($_GET['page'] = '21' || preg_match('/\W/', $_GET['page']) || file_exists('./intl/tpl/tpl_source/' . $_GET['page'] . '.tpl')) { 
//my stuff 
} 

:

는하지만 난 한 사용자가 열 수를 지정해야합니다, 그래서 코드는 같아야합니다 ? page = 22 등). 질문이 분명하지 않은 경우 죄송합니다.

답변

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(); 
0

당신은 화이트리스트 만들 수 있습니다

var $pages = array(
    21 => true, 
    22 => true 
); 
// or 
var $pages = array_flip(array(21, 22)); 

을하고 페이지가 거기에 있는지 여부를 테스트 : (! 필터링)

if(isset($pages[$_GET['page']])) { 

}