我试图通过直接访问来保护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。注意:我必须包含config.php文件,因为它包含php文件中每个函数都需要的配置。
答案 0 :(得分:1)
config.php
在允许直接访问的每个PHP脚本中,需要它:
require_once $_SERVER['DOCUMENT_ROOT'] . '/core/configs/config.php';
在每个要防止直接访问的PHP脚本中,请检查常量:
if(!defined('TESTCONST')) { header('Location: /'); }
(如果已定义,则config.php
已经是必需的,因此不需要require_once
)
为常量的定义创建另一个PHP文件(这里,我们称之为access.php
)
<?php define('TESTCONST', true);
在允许直接访问的每个PHP脚本中,需要它:
require_once $_SERVER['DOCUMENT_ROOT'] . '/core/configs/config.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/core/configs/access.php';
在每个要防止直接访问的PHP脚本中,请检查常量:
require_once $_SERVER['DOCUMENT_ROOT'] . '/core/configs/config.php';
if(!defined('TESTCONST')) { header('Location: /'); }
答案 1 :(得分:0)
如果您试图阻止Web访问某些php文件,那么它最好拒绝从服务器访问。对于apache,您可以使用.htaccess文件 如下设置文件:
/index.php
/protected/.htaccess
/protected/sensitive_script.php
/protected/not_not_access.php
和.htaccess
Deny from all