page1.php中:
include 'page2.php';
echo $info;
使page2.php:
$info = "some info";
if(!included){
echo 'Why are you on this page?';
}
if(!included){
的目标是确定page2.php
是否通过include
中的page1.php
加载,或者用户是否直接请求了该页面。文档中没有返回此类值的函数。我该如何创建这样的功能?
答案 0 :(得分:5)
您基本上有两种选择:
a)如果您被收录,请与debug_backtrace
核实
$bt = end(debug_backtrace()); // supposing that you don't include in functions / from other included files etc...
if (!empty($bt) && in_array($bt["function"], array("include", "include_once", "require", "require_once"))) {
// you're being included!
}
b)在page1.php中定义一些常量,变量等,并在page2.php中检查它是否存在(defined
或isset
)
答案 1 :(得分:1)
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
echo "wild and free!";
}
答案 2 :(得分:1)
窃取/同意bwoebi,你可以做出定义。
在page1.php中:
define("PAGE1_NOT_USER", true);
在page2.php中,您只想在用户请求上运行代码:
if(!defined("PAGE1_NOT_USER"))
{
<code here>
}
我的PHP很生疏,但这应该可以解决问题。调试选项涵盖所有基础:我只是涵盖了这个(以及你可能使用定义的任何其他地方)。