【问题标题】:PHP Constants in includes包含中的 PHP 常量
【发布时间】:2013-05-29 10:10:44
【问题描述】:

我已在配置文件中将网站的根目录定义为常量:

define('SITE_ROOT', 'http://folder/site/home');

然后我尝试在包含字符串中使用该常量,但它似乎不起作用:

<? include (SITE_ROOT.'/incs/header.php'); ?>

但是当我使用它来包含图像时,它可以正常工作:

<img src="<?= SITE_ROOT ?>/img/banner.png"/>

我错过了什么?

【问题讨论】:

    标签: php include constants


    【解决方案1】:

    这是因为 include 使用本地文件系统路径,而不是 URL。即使您使用适当的配置启用通过 HTTP 包含文件(这通常是一个坏主意并且存在很大的安全风险),您仍然会遇到其他问题。

    你想要做的是在你的配置文件中定义另一个常量:

    define('DIR_ROOT', dirname(__FILE__)); // DIR_ROOT points to where the config is
    

    然后

    <? include (DIR_ROOT.'/incs/header.php'); ?>
    

    顺便说一句,你不应该永远在 HTML 中嵌入未转义的数据。您的 &lt;img&gt; 示例应该改为

    <img src="<?= htmlspecialchars(SITE_ROOT); ?>/img/banner.png"/>
    

    请注意,上述内容仍然不正确,因为htmlspecialchars 的前三个参数应始终明确指定。由于这很麻烦,实际上你会用你自己的函数包装对它的调用,该函数也有一个很好的短名称(这是一个单字符名称是个好主意的例外情况之一)。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 1970-01-01
      • 2010-12-08
      • 2013-12-18
      • 2018-12-02
      • 2011-05-23
      • 2011-11-28
      • 2013-05-02
      • 1970-01-01
      相关资源
      最近更新 更多