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
in加载page1.php
,或者用户是否直接请求该页面。文档中没有返回此类值的函数。我怎样才能创建这样的功能?
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
in加载page1.php
,或者用户是否直接请求该页面。文档中没有返回此类值的函数。我怎样才能创建这样的功能?
你基本上有两个选择:
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
)
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
echo "wild and free!";
}
窃取/同意 bwoebi,您可以定义。
在 page1.php 中:
define("PAGE1_NOT_USER", true);
在 page2.php 中,对于您只想在用户请求上运行的代码:
if(!defined("PAGE1_NOT_USER"))
{
<code here>
}
我的 PHP 生锈了,但这应该可以解决问题。调试选项涵盖了所有基础:我的只是涵盖了这个(以及您可能使用定义的任何其他地方)。