PHP防止浏览器直接访问文件

很多时候,出于安全等因素考虑,我们的程序中某些文件不想被用户在浏览器中直接访问,可以用以下方法处理一下,以 config.php 为例。

方法一:定义变量判断

在调用 config.php 的外部代码中,定义一个标识变量,如下:

define('IS_INC', TRUE);

然后在 config.php 中进行判断:

if(!defined('IS_INC')) {
	exit('Please do not load this page directly. Thanks!');
}

方法二:URL判断

在 file.php 的头部添加如下代码:

if (isset($_SERVER['SCRIPT_FILENAME']) && 'config.php' == basename($_SERVER['SCRIPT_FILENAME']))   
	die ('Please do not load this page directly. Thanks!');

注释:

$_SERVER["SCRIPT_FILENAME"] 获取浏览器请求URL中文件的完整路径;

basename($_SERVER["SCRIPT_FILENAME"]) 获取页面文件名 config.php ,与 $_SERVER["SCRIPT_NAME"] 相同。

在上述 if 判断语句中,如果浏览器URL中执行的文件名与 config.php 一致,也就是说浏览器直接访问了该文件,执行 die……