【问题标题】:How can i get the URL of the page that used "require_once"如何获取使用“require_once”的页面的 URL
【发布时间】:2012-06-27 00:42:20
【问题描述】:

我创建了一个 PHP 站点,它有 3 个页面,即 A、B 和 C。A 和 B 都将首先使用“require_once”调用页面 C。页面 C 有没有办法知道这个呼叫是来自 A 还是 B?

$_SERVER['HTTP_REFERER'] 不起作用。

【问题讨论】:

  • 出于好奇,您究竟为什么需要知道?你需要知道多少?您只需要区分两者还是必须能够准确指出哪一个?
  • 在A和B中放一个标签,比如$tag = "A.php";

标签: php require-once


【解决方案1】:

A.php

$page = 'A';
require_once 'C.php';

B.php

$page = 'B';
require_once 'C.php';

C.php

echo 'I was required by'.$page;

【讨论】:

  • 这意味着$page 变量需要在所有三个页面上都可用。
  • 是的,require() 调用也一样
  • 您的解决方案仅适用于文件数量较少的情况。否则,在每个文件中包含 $page 的初始化需要太长时间...
  • 使用 require_once() 所花费的时间相同;如果页面数量增加,OP 可以采用另一种方法,例如“前控制器”,它也将处理 $page 确定。无论如何,简单问题的简单答案(“有 3 页的网站”)
【解决方案2】:

您可以在c.php中使用debug_backtrace函数
您还将获得呼叫者文件和呼叫者行号。

$db =  debug_backtrace();

echo "Calling file: ". $db[0]['file'] . ' line  '. $db[0]['line'];

【讨论】:

    【解决方案3】:

    试试 $_SERVER['REQUEST_URI']。根据 php.net,

    URI 提供整个请求路径(/directory/file.ext?query=string)

    【讨论】:

    • 谢谢。这就是我一直在寻找的方式,因为我不想在调用页面中放置任何额外的变量。抱歉,我没有足够的声望来投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多