2

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通过includein加载page1.php,或者用户是否直接请求该页面。文档中没有返回此类值的函数。我怎样才能创建这样的功能?

4

3 回答 3

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 是否存在(definedisset

于 2013-04-18T16:27:04.727 回答
1
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) {
   echo "wild and free!";
}
于 2013-04-18T16:30:41.713 回答
1

窃取/同意 bwoebi,您可以定义。

在 page1.php 中:

define("PAGE1_NOT_USER", true);

在 page2.php 中,对于您只想在用户请求上运行的代码:

if(!defined("PAGE1_NOT_USER"))
{
    <code here>
}

我的 PHP 生锈了,但这应该可以解决问题。调试选项涵盖了所有基础:我的只是涵盖了这个(以及您可能使用定义的任何其他地方)。

于 2013-04-18T16:32:04.223 回答