目前我这样做:
在一个文件中,我们称之为file_one.php
,我有
define( 'ROOT', realpath( dirname( __FILE__ ) ) );
require_once( ROOTPATH . '/file_two.php' );
然后在file_two.php
我将其放在顶部:
if ( ! defined( 'ROOT' ) )
exit;
因此,file_two.php
的内容只有在定义ROOT
时才能访问,这种情况发生在file_one.php
中。如果您尝试直接访问file_two.php
,它将无效,是不是?这种方法有什么缺陷吗?
答案 0 :(得分:1)
就像你说的那样。如果有人直接在浏览器/../../file_two.php中输入,它就会退出。独立加载文件时,如果没有包含,则不定义ROOT。
请记住,在PHP中,一个文件包含其他文件,其他文件最后只有一个文件。因此,如果您的直接访问变量未在检查之前的某处定义,则不允许访问。
答案 1 :(得分:1)
将John Conde的评论转换为答案:
确保无法在浏览器中访问文件的最佳方法是将其放在webroot之外。
您应该有一个名为www
或public_html
或类似的文件夹,其中包含您网站的文件。好吧,在包含该文件夹的文件夹中,您可以放置一个includes
文件夹,并在其中包含您的脚本访问权限文件。这样,它们完全无法通过Web访问,但脚本仍然可以访问它们。