是否有可能检测浏览器本身是否浏览PHP文件而不是包含?
我正在使用PHP处理一些代码,然后将其写入包含此PHP的另一个页面中(使用PHP include())。我不希望它被自己浏览,我希望只有包含它才能被访问(再次使用PHP include())
我想实现这样的目标:
if (browser is not opened by include){
header("Location: /forbidden");
die();
}
else {//do nothing}
现在,我有可能实现我想要的目标吗?
答案 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文件中创建一个变量,如果没有设置,则重定向它们。