我试图保护PHP文件免受直接访问 . 我在config.php中定义了“TESTCONST”常量 . 在其他文件中,我正在检查它是否由以下定义:
if(!defined('TESTCONST')) { header('Location: /'); }
但是,如果我在上面包含config.php,这将无效,因为它将始终定义 . 那么我怎么能用define!定义来实现呢?这是一个结构:
config.php文件:
<?php
define('TESTCONST', true);
.*.. A lot of other configs ...*
其他一些php文件
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/core/configs/config.php';
if(!defined('TESTCONST')) { header('Location: /'); }
.*.. A lot of other things ...*
P.S. Note: I have to include config.php file, because it contains configs, that are required by every function in php files.
2 Answers
如果您试图阻止Web访问某些PHP文件,那么它最好拒绝从服务器访问 . 对于apache,您可以使用.htaccess文件设置文件:
在.htaccess中
第一种方式:使用你的config.php
在允许直接访问的每个PHP脚本中,需要它:
在要防止直接访问的每个PHP脚本中,检查常量:
(如果已定义,则已经需要
config.php
,因此不需要require_once
)第二种方式:使用另一个脚本文件
为常量的定义创建另一个PHP文件(这里,我们称之为
access.php
)在允许直接访问的每个PHP脚本中,需要它:
在要防止直接访问的每个PHP脚本中,检查常量: