检测如果未通过include打开PHP

时间:2014-01-18 03:05:01

标签: php php-include

是否有可能检测浏览器本身是否浏览PHP文件而不是包含?

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

我想实现这样的目标:

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

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

3 个答案:

答案 0 :(得分:2)

将其置于您的网络根目录之外。它无法通过Web浏览器等访问。

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

答案 1 :(得分:1)

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

PHP CHeck if a File is Loaded Directly Instead of Including

不是在“base”文件中添加define('APP_RAN'),而是将其添加到include中,并将其他代码段添加到基本文件中。

答案 2 :(得分:0)

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

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

OR

创建.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>

OR

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