以下是我的文件结构示例。
/index.php
/inc
/inc/file1.php
/inc/file2.php
/inc/file3.php
/search.php
index.php包括()file1.php,file2.php和file3.php。 我希望它们只能通过index.php访问。
最优雅的解决方案是什么?
由于
答案 0 :(得分:7)
将它们置于文档根目录之外:
/documentroot/index.php
/inc/file1.php
/inc/file2.php
/inc/file3.php
因此,无论如何都无法直接访问它们。
答案 1 :(得分:2)
在index.php中,你可以像这样定义一个常量:
define('RESTRICTED',1);
然后在其他页面中,您将其放在<?php
if(!defined('RESTRICTED'))exit('No direct script access allowed!');
当直接访问其他页面时,上面的代码看到RESTRICTED尚未设置,因此它将退出。
答案 2 :(得分:1)
制作.htaccess文件并将其放入inc文件夹
<Files .htaccess>
order allow,deny
deny from all
</Files>
<Files *.php>
order allow,deny
deny from all
</Files>
或将其置于您想要拒绝的文件顶部
if(strrchr($_SERVER['PHP_SELF'],'/')=='/file_name.php'){die;} // not good for ajax include