用户评论:
peter at olds dot co (2012-06-01 22:14:56)
In case anyone is wondering this function can NOT read into other files like get_defined_functions does.
Meaning I have ScriptA.php inside ScriptA.php I require ScriptB.php.
ScriptB.php requires ScriptC.php, ScriptD.php, etc. When I run the results of get_included_files() it will only show me ScriptB.php. Just an FYI.
donikuntoro at integraasp dot com (2011-08-29 03:32:41)
This function aims to perform filtering of files that have been included :
if((count($arrayInc)>0)&&(count($incFiles)>0)){$aInt=array_intersect($arrayInc,$incFiles);
if(count($aInt)>0){
returnfalse;
}elseif(count($aInt)<1) {
foreach($arrayIncas$inc){
if(is_file($inc))
include($inc);
else{
returnfalse;
}
}
}
}else{
returnfalse;
}
}?>
Usage :
$toBeInclude= array('/data/your_include_files_1.php','/data/your_include_files_2.php','/data/your_include_files_3.php',
);setIncludeFiles($toBeInclude);?>
Return false if something goes wrong.
cleggypdc at gmail dot com (2008-06-23 09:47:59)
If you want to get the relative path of an included file, from within itself use this function. If you ever have a include file thats path may not be static, this can save some time.
{//find the current files directory$includes=get_included_files();$path="";
for ($i=0;$i
{$path=strstr($includes[$i],$file_name);
if ($path!=false)
{$key=$i;
break;
}
}$path=str_replace(getcwd(),"",$includes[$key]);$path=str_replace("\\","/",$path);$path=str_replace($file_name,"",$path);$path=ltrim($path,"/");
return$path;
}?>
sam at consideropen dot com (2008-05-29 13:57:56)
If you want to avoid the filepaths, just wrap get_included_files() inside preg_replace() to get rid of path info:
$filenames=preg_replace("/\/.*\//","",get_included_files());?>
yarco dot w at gmail dot com (2007-07-03 20:27:04)
If you have a MAIN php script which you don't want to be included by other scripts, you could use this function. For example:
main.php:
{$buf=get_included_files();
return$buf[0] !=__FILE__;
}blockit() and exit("You can not include a MAIN file as a part of your script.");
print"OK";?>
So other script couldn't include main.php to modify its internal global vars.
indigohaze at gmail dot com (2006-08-28 10:30:58)
Something that's not noted in the docs, if a file is included remotely and you do a get_included_files() in the include itself it will *not* return the document that included it.
ie:
test2.php (server 192.168.1.14):
test3.php (server 192.168.1.11):
$files=get_included_files();print_r($files);?>
returns:
Array ( [0] => /var/www/localhost/htdocs/test/test3.php )
Which means you can use get_included_files() to help intercept and prevent XSS-style attacks against your code.
RPaseur at NationalPres dot org (2006-03-08 08:04:40)
As is often the case, YMMV. I tried the __FILE__ and SCRIPT_FILENAME comparison and found this:
SCRIPT_FILENAME: /var/www/cgi-bin/php441
__FILE__: /raid/home/natpresch/natpresch/RAY_included.php
As an alternative:
count(get_included_files());
Gives one when the script is standalone and always more than one when the script is included.
keystorm :at: gmail dotcom (2004-09-07 14:08:55)
As of PHP5, this function seems to return an array with the first index being the script all subsequent scripts are included to.
If index.php includes b.php and c.php and calls get_included_files(), the returned array looks as follows:
index.php
a.php
b.php
while in PHP<5 the array would be:
a.php
b.php
If you want to know which is the script that is including current script you can use $_SERVER['SCRIPT_FILENAME'] or any other similar server global.
If you also want to ensure current script is being included and not run independently you should evaluate following expression:
__FILE__ != $_SERVER['SCRIPT_FILENAME']
If this expression returns TRUE, current script is being included or required.