【问题标题】:Print file name of including file, not included打印包含文件的文件名,不包含
【发布时间】:2013-03-23 03:49:02
【问题描述】:

我有 example1.phpexample2.php,其中包括 example3.php。在example3.php 我有:

<link rel="canonical" href="http://website.com/<?php echo basename(__FILE__); ?>">

我想要的是在href 中拥有example1.php/example2.php,这取决于文件包括 example3.php。问题当然是__FILE__ 输出example3.php。是否可以获取包含文件的文件名,而不是包含的文件名?

请不要建议使用易受攻击的 XSS SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']

【问题讨论】:

  • 您可以在“包括”之前设置一个变量,然后引用该变量。很痛苦,但它会起作用。

标签: php httprequest canonical-link http-host


【解决方案1】:

(警告:这个技巧可能无法扩展,但在这种情况下会起作用。)

使用get_included_files()返回的元素0。那将是启动链的原始文件

在example3.php中:

$gif = get_included_files();

那你就可以了

&lt;link rel="canonical" href="http://website.com/&lt;?php echo basename($gif[0]); ?&gt;"&gt;

【讨论】:

    【解决方案2】:

    如果您不想使用任何 $_SERVER[''] 类型来获取文件名 你可以使用

    pathinfo(__FILE__, PATHINFO_BASENAME)
    

    只是得到你想要的文件名

    【讨论】:

    • 哦,谢谢。而且pathinfo(__FILE__, PATHINFO_BASENAME) 不会受到可能的 XSS 漏洞的影响,对吧? :)
    • 是的,对不起,不是什么都不输出,它仍然输出example3.php
    • 是的,这就是它的作用......这就是你想要做的吗?
    • 没有。我想打印 example1.php 或 example2.php,根据这两个文件之一包含 example3.php :)
    • 我不明白。你能进一步说明你想做什么吗? :)
    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多