2013-05-06 5 views
0

질문이 있습니다. 나는이 스크립트를 가지고있다PHP 포함 파일을 찾을 수 없습니다.

<?php 
$GetPage= "index"; 
if((isset($_GET["page"])==true) && ($_GET["page"] != "")){ 
$GetPage = $_GET["page"]; 
} 
?> 

그러나 나는 stackoverflow와 google에서 검색한다. 그러나 나는 그것을 발견 할 수 없다. PHP가 파일을 찾을 수 없을 때 오류 페이지를 포함하고 싶습니다. 어떻게해야합니까? 나는 PHP로 선발 투수 야.

Ow를 거의 잊지 않았습니다. 이 사이트의 일부를 포함 시키려면 다음을 사용하십시오.

<?php include ("include/$GetPage.php"); ?> 

감사합니다.

+0

include 문에서'index.php'를 바로 쓸 수 있습니까? –

+6

** **이 작업을 수행하지 마십시오. 이것은 끔찍한 나쁜 보안 문제입니다. 악의적 인 사용자는 경로를 알고있는 ** ANY ** 파일을 시스템에 포함시킬 수 있습니다. 예 : http : //example.com? page = ../../../../../../../etc/passwd'을 고려하십시오. –

+0

http://en.wikipedia.org/wiki/ File_inclusion_vulnerability –

답변

1
<?php 

//file_exists will eliminate the need for any of your other checks. 
if(file_exists($_GET["page"])){ 
    //Set the page to be loaded if it is found on the server 
    $GetPage = $_GET["page"]; 
}else{ 
    //Show the user a 404 error message 
    header("HTTP/1.0 404 Not Found"); 
    //OR 
    //Set the page to be loaded as your custom error page 
    $GetPage = "my_error_page.php"; 
} 

//Include the page 
include $GetPage; 

?> 
존재 아닌지에

404 리디렉션을 원하십니까? 또는 문서에 사용자 정의 오류 페이지를로드하면됩니까? 원하는 것을 기준으로 위를 선택하십시오.

+0

답장을 보내 주셔서 감사합니다. 좋은 시작입니다. 하지만 내가 가지고있는 스크립트는 get 함수를 사용하지 않을 때 파일을 포함합니다. 이것이 내가이 사이트에 필요한 것입니다. 그러나 나는 초보자이며 누군가 내가 게시 한 스크립트로 나를 도왔다. 그러나 작은 업데이트가 필요합니다. – Tom

+0

@CooPer에 명시된 바와 같이, 모든 종류의 주입을 방지하기 위해 전달 된 변수를 이스케이프 처리해야합니다. –

+0

나는 그것을 시도 할 것이다. 답장을 보내 주셔서 감사합니다. – Tom

0
$GetPage = $_GET["page"]; // validate string!! 
if (!file_exists('include/' . $GetPage . '.php')) { 
    $GetPage = 'errorPage'; 
} 
+0

빠른 답장을 보내 주셔서 감사합니다! 그러나 뭔가를 게시하는 것을 잊었습니다. $ getpage를 사용하여 내 홈 페이지를 포함합니다. 나는 파일을 포함하는 데 사용합니다. 오타 나 사용자를 만들 때 다음과 같은 PHP 오류가 발생합니다 : 경고 : include (include/about0.php) [function.include] : 스트림을 열지 못했습니다 :/home/tombalf/domains/tombalfoort.com/public_html/index.php on line 59 나는 PHP 오류가 아니라 내가 만든 오류를 원하지 않습니다. – Tom

0

1 체크 파일 폴더 (주 사용), ($file이. 파일의 전체 경로)

$path = "include";//your include folder path 
if (substr(realpath($file) , 0,strlen($path)) != $path || is_dir($file)) 
     //error file not found 

초 검사 파일

if (!file_exists($file)) 
//error 
관련 문제