2011-10-24 4 views
3

파일 목록을 작성하여 배열에 놓으려고합니다. 외부 콘텐츠를 호출하는 페이지의 콘텐츠를 변경해야합니다.이름 배열 = 올바른 파일 받기

이 코드 조각을 발견하여 작동 시키려고합니다. LINK (마지막 코멘트)

$all_pages=array("main","page_two","page_three");  
$page = $_GET['page'];  
if(isset($page) and array_key_exists("$page", $all_pages)) // added a missing ')' 
{ 
include('subfolder/folder/'.$_GET['$page'].'.html'); 
} 

아니라,이 작동하지 않습니다. 올바른 파일을 가져올 수 없습니다. (내용은 항상 비어 있음을 나타냄).

내가 좋아하는 파일을 호출 (시도) : 사전에

<ul>  
    <li><a href="template.php?main">Main content</a></li> 
    <li><a href="template.php?page_two">Second content</a></li> 
    <li><a href="template.php?page_three">Third content</a></li> 
</ul> 

감사합니다!

+1

은 "template.php? page = main"이어야합니다. –

답변

2

허용되는 값을 테스트하려면 in_array()을 사용해야합니다. array_key_exists은 페이지 이름을 배열 키로 요구합니다.

둘째, $_GET["page"]은 해당 이름의 get 매개 변수가 없으므로 비어 있습니다. (당신이 아마 그렇게하고 싶지 않아 하거나 $_SERVER["QUERY_STRING"]를 사용하지만..)

<li><a href="template.php?page=main">Main content</a></li> 
    <li><a href="template.php?page=page_two">Second content</a></li> 
    <li><a href="template.php?page=page_three">Third content</a></li> 

세 번째 문제는 사용했다 : 당신은 당신의 연결을 적응해야

include('subfolder/folder/'.$_GET['$page'].'.html'); 
          ^^^ ^^^ 

이미 $page 변수 만 사용했는데 이미 $_GET에서 읽었을 것입니다. 이 이름을 다시 키로 사용하면 효과가 없습니다. 그리고 당신은 추가적으로 작은 따옴표를 사용했습니다 (이중으로 잘못되었지만 운 좋게도 효과가 없습니다).

그래서 올바른은 다음과 같습니다

$all_pages = array("main", "page_two", "page_three");  
$page = $_GET['page']; 
if (in_array($page, $all_pages)) 
{ 
    include('subfolder/folder/'.$page.'.html'); 
} 
+0

감사합니다. 메인 컨텐츠를 가리 키기 위해'else'를 추가해야한다고 생각합니다. '처음에는'메인 '콘텐츠가로드되지 않습니다. BTW는 위대한 작품입니다! –

+0

예, 기본 포함은 여기 'else'블록에 속합니다. – mario

1

변경 in_array-array_key_exists. 또한 변수 $ page를 설정할 수는 있지만 비어있을 수 있습니다. if(!empty($page) && ... 등으로 비어 있지 않은지 확인하십시오.

+0

감사합니다. 너의 도움을 칭찬해라! +1! –

관련 문제