2013-01-12 2 views
2

파일 first.phporiginal.phpinclude_once이 포함됩니다.PHP 파일이 포함되어 있는지 감지 할 수 있습니까?

original.php 안에있는 함수를 호출하려고 할 때 문제가 발생하며 사용자 세션이 없으면 해당 파일이로드되지 않습니다.

Basicaly 나는있는 몇 가지 기능이 first.php 나중에 전화 메신저,하지만 이러한 기능으로 인해 내가 original.php에 설정 한 제한 inaccesible하지만 지금은 그런 요청을 허용하도록 original.php에 규칙을 추가 할 파일 original.php을 포함하고있어 아이디어

if($fileIncluded == 'yes') 
{ 
    // do not check if user session exist etc. 
} 
else 
{ 
    // check for user session 
} 

감사 : first.php 또는 original.php 포함됩니다 다른 PHP 파일 ...

에서 나는이 경우에 할 수 또는 단순히 같은 조항 경우 original.php에 몇 가지를 추가 할 수 있는지 궁금합니다미리 도와주세요!

+0

http://ch2.php.net/manual/en/function.define.php 당신이 거기에 사용자 세션 없다, 또는 당신이 전화를해도 그 '가 포함되지 않은 include_once' 경우 의도적으로'original.php'을 포함하지 않는 말을하고 있습니까 그것은 사용자 세션이 존재하지 않는 경우? 코드에서 버그처럼 들립니다. – dimo414

답변

3

당신은 파일에 상수를 설정할 수는과 같이 포함합니다 :

original.php에서 : 상수가 존재하는 경우

define('ORIGINAL_INCLUDED', TRUE); 

그런 다음 first.php에서 확인할 :

if (defined('ORIGINAL_INCLUDED')) 
{ 
    // do not check if user session exist etc. 
} 
else 
{ 
    // check for user session 
} 

get_included_files()과 달리 스크립트에 scri가 포함되어있을 때 작동합니다. 태평양 표준시. get_included_files()은 주 스크립트에 포함 된 파일 만 반환하지만 하위 스크립트에 포함 된 파일은 반환하지 않습니다.

또는 original.php

는 :

if ('original.php' == basename(__FILE__)) 
{ 
    // original.php directly accessed 
} 
else 
{ 
    // original.php included instead 
} 
+0

C 스타일 접근법 +1, PHP에서 좀 지저분 해 보입니다. – Bojangles

+0

original.php에'first.php'가 포함되도록 파일이 original.php – ProDraz

+0

@Adrov에 포함되었는지 감지하고 싶습니다. 그렇다면 편집을 참조하십시오. –

1

글쎄, 나는 PHP 초보자입니다,하지만 난

$add_file = require(file.php); 

을 다음

if($add_file) {echo "file is aded";} else {echo "file is not added";} 
+0

코드가 original.php 파일에 있어야합니다 ... : S 당신은 나를 잘못 이해했습니다. – ProDraz

1

당신은 기능 get_included_files()를 사용할 수 없거나이 같은 변수를 설정합니다 :

// includedfile.php 
$variable = true; 

//index.php 
include 'includedfile.php'; 

if(isset($variable)) { 
    // file included 
} else { 
    // not included 
} 
+0

귀하의 공헌에 감사 드리며, 나는 달성하고자하는 것을 설명하기 위해 원본 게시물을 업데이트했습니다. 다시 한 번 감사드립니다! – ProDraz

2

PHP는 get_included_files functi를 제공합니다. 이 시나리오에서 작동하는 것 같습니다.

if in_array('file.php', get_included_files()) { 
    /* ... */ 
} 
+0

귀하의 공헌에 감사 드리며, 나는 달성하고자하는 것을 설명하기 위해 원본 게시물을 업데이트했습니다. 다시 한 번 감사드립니다! – ProDraz

1

또한 상수를 정의하고, 나중에 정의 된 경우 확인할 수 있습니다. 을 사용하여을 정의하면 기능이 정의됩니다. 정상적인 변수를 사용하는 것보다 낫다고 생각합니다.

PHP는 문서 : http://ch2.php.net/manual/en/function.defined.php

관련 문제