如果没有从include运行代码,则运行代码

时间:2013-04-18 16:25:03

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

3 个答案:

答案 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中检查它是否存在(definedisset

答案 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很生疏,但这应该可以解决问题。调试选项涵盖所有基础:我只是涵盖了这个(以及你可能使用定义的任何其他地方)。