0

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

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

我想实现这样的目标:

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

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

4

3 回答 3

2

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

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

于 2014-01-18T03:07:41.597 回答
1

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

PHP 检查文件是否直接加载而不是包含

而不是define('APP_RAN')在“基础”文件中添加,将其添加到包含并将另一个片段添加到基础文件中。

于 2014-01-18T03:08:22.197 回答
0

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

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

或者

创建一个.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 文件中创建一个变量,如果未设置则重定向它们。

于 2014-01-18T03:14:51.530 回答