2014-01-24 1 views
1

이것은 내 전체 코드입니다. 나에게 공유 됨. 나는이 오류가 계속 이유를 알아낼 수 없습니다

Notice: Undefined index: page in /export/home/dynamic/index.php on line 20 

:

내 오류입니다. 그것은 처음은 아니지만, 나는 그것이 어레이라고 의심해 왔지만, 어떻게해야할지 모르겠다.

내 웹 사이트에 동적 변경 페이지를 만드는 것으로 가정합니다. 나는 전역 변수를 어디서 만들었는지 오류가 있었음 $page = $_GET['page'];

나는 어떤 종류의 대답에 대해서도 개방적이며, 나는 그들 모두에게 위대한 사람들이다.

<!DOCTYPE html> 
<html> 
<head> 
<title>Website</title> 
</head> 
<body> 
<header>Header<br /> 
<nav> 
<a href="index.php?page=index">INDEX</a> 
<a href="index.php?page=page1">Startsida</a> 
<a href="index.php?page=page2">Anteckningar</a> 
<a href="index.php?page=page3">Kontakt</a> 
<!-- <a href="index.php?page=faq">FAQ</a> --> 
</nav></header> 

<div id="content"> 
<?php 

// Place the value from ?page=value in the URL to the variable $page. 
$page = $_GET['page']; 

// Create an array of the only pages allowed. 
$pageArray = array( 
     'index', 
     'page1', 
     'page2', 
     'page3', 
     'faq' 
     ); 

// If there is no page set, include the default main page. 

if (!$page) { 
    include('pages/index.php'); 
} 

// Is $page in the array? 
$inArray = in_array($page, $pageArray); 

// If so, include it, if not, emit error. 
if ($inArray == true) { 
    include('pages/'. $page .'.php'); 
}else { 
    echo 'Umm tisk tisk. You should not be messing with things.'; 
} 
?> 
</div> 

<footer>Footer</footer> 

</body> 
</html> 

IT SOLVED! hek2mgl 덕분에 코드가 올바르게 작동합니다.

내 문제에 대한 답변을 제출해 주셔서 감사드립니다. 나는 너희들에게 빚지고있다.

+0

경우 단지 확인 후 통지

$page = @$_GET['page']; 

침묵 할 수 isset()을 사용하여 $ _GET [ 'page'] 변수의 존재를 항상 확인해야합니다. - http://de2.php.net/manual/de/function.isset.php function – Tebe

답변

4

은 바르 :

if(!in_array($page, $pages)) { 
    die('page was not found'); 
} 
+0

하지만 그게 제가 여기서 한 것입니다. // $ page가 배열에 있습니까? $ inArray = in_array ($ page, $ pageArray); // 그렇다면 포함 시키십시오. 그렇지 않으면 오류를 내 보냅니다. if ($ inArray == true) { include ('pages /'. $ page. '. php'); } else { echo 'Umm tisk tisk. 너는 사물을 망쳐서는 안된다. '; } – Illscha

+0

신성한 몰리! 그것은 효과가있다! : D 감사합니다! 사용 ( ) } else { // 설정되지 않은 경우 적절한 기본값을 설정하십시오. $ page = 'index'; } 감사합니다. – Illscha

+0

도움이 되서 기쁩니다 :) 예, PHP에서는 배열 인덱스가 액세스하기 전에 존재하는지 확인해야합니다. – hek2mgl

1

존재하지 않는 값을 지정하고 있습니다. $ _GET을 사용하기 전에 그것이 존재하는지 확인해야합니다.

사용 당신은 page는 GET을 통해 전송 된 경우 확인해야 isset($_GET['page'];)

+0

T 당신의 대답을 제출해 주셔서 감사합니다. 내 문제는 지금 해결되었습니다 :) – Illscha

1
: 당신이 $page이 적절한 값이 포함되어 있는지 확인하는 데 필요한 다음 단계에서

if(isset($_GET['page'])) { 
    $page = $_GET['page']; 
} else { 
    // set proper default value if it was not set 
    $page = 'index'; 
} 

'page'$_GET의 기존 색인이 아니기 때문입니다. 당신은 것을 확인할 수 있습니다 첫 번째

$page = isset($_GET['page']) ? $_GET['page'] : ""; 

하거나 페이지가 알려진 페이지가 처음 당신을에서

$page = in_array($page, $knownPages) ? $page : "index"; 
+0

답변을 제출해 주셔서 감사합니다. 내 문제가 해결되었습니다 :) – Illscha

0
$p = array("Home", "About", "Hosting", "VPS","GameServer","Contact"); 
    if(isset($_GET['page']) AND in_array($_GET['page'],$p)) 
     { 
      include('pages/'.$_GET['page'].'.php'); 
     }else{ 
      include('pages/home.php'); 
     } 
+1

Stack Overflow에 오신 것을 환영합니다! 이 코드 스 니펫이 질문을 해결할 수 있지만 [설명 포함] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 정말 게시물의 품질을 향상시키는 데 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. –

관련 문제