【问题标题】:Detect If PHP is not opened by include检测 PHP 是否未被 include 打开
【发布时间】:2014-02-07 14:04:08
【问题描述】:

是否有可能以任何方式检测 PHP 文件是否由浏览器本身浏览而不是通过包含?

我正在使用 PHP 处理一些代码,然后将其写入包含该 PHP 的另一个页面(使用 PHP include())。我不希望它自己被浏览,我希望它只有在被包含时才能被访问(再次,使用 PHP include())

我想实现这样的目标:

if (browser is not opened by include){
    header("Location: /forbidden");
    die();
}
else {//do nothing}

现在,我有可能实现我想要的吗?

【问题讨论】:

    标签: php php-include


    【解决方案1】:

    按照我建议的顺序来达到预期的结果,首先是最好的。

    将它们放在网络根目录之外的文件夹中。

    创建.htaccess 以拒绝对除服务器 ip 之外的文件夹的访问。

    Options -Indexes
    <Files *.php>
    Order Deny,Allow
    Deny from all
    Allow from servers ip
    Allow from servers ip if more than one
    #Allow from your ip if you want to
    </Files>
    

    在你的父 php 文件中创建一个变量,如果没有设置,则重定向它们。

    【讨论】:

      【解决方案2】:

      看起来你可以试试这个答案的反向方法:

      PHP CHeck if a File is Loaded Directly Instead of Including

      不要在“base”文件中添加define('APP_RAN'),而是将其添加到include中,并将另一个sn-p添加到base文件中。

      【讨论】:

        【解决方案3】:

        将它放在您的网络根目录之外。网络浏览器等无法访问。

        另一种解决方案是在您的引导程序或配置文件(无论您使用什么)中声明一个常量,然后在您的包含中检查它。如果它不存在,则包含调用die()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-08-30
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          • 1970-01-01
          • 1970-01-01
          • 2015-07-21
          • 1970-01-01
          相关资源
          最近更新 更多