define('EmpireCMSAdmin','1'); defined('DT_ADMIN') or exit('Access Denied'); define('MANAGE_ADMIN', true);
原理是什么
1
zgx030030 2017-11-22 14:10:17 +08:00
就是定义一个常量啊... 其它地方检查这个值,如果有定义,就怎样怎样,如果没定义,就怎样怎样。比如你例子中的 DT_ADMIN 这句 是 destoon 后台的一些 php 头部的一句,这个常量只在入口处定义,这样就防止了这些 php 绕过入口而被直接访问的情况.....
|
2
Junjunya 2017-11-22 15:23:47 +08:00 1
就如楼上所说
这样做是防止了 php 文件 绕过入口而被直接访问的情况 一般会在入口文件 比如 index.php 定义一句 define('DT_ADMIN','1'); 这样 你如果直接访问其他文件 比如 /aa/a.php 会在 defined('DT_ADMIN') or exit('Access Denied'); 这一句被截断 无法继续运行下面的代码 |
3
yongjing 2017-11-22 15:37:14 +08:00
帝国 cms ?
|
4
littlehz 2017-11-22 20:10:57 +08:00 1
早期的框架,index.php 是在最外层,而代码库是在 index.php 所在文件夹的子目录。如楼上几位所说,里面的文件有可能直接输入 url 访问到,导致出现一些意外情况。当年,大部分是虚拟主机,这是主流解决方案。
而现代 php 框架,index.php 入口文件一般会放在 public 独立目录,代码库放在 public 的上级平级文件夹。nginx/apache 的 webroot 指向 public 目录,输入 url 根本不可能访问到代码库文件。所以现代 php 框架很难见到这些 define 定义和 exit 判断了。现在的主流是云主机(虚拟机)和独立服务器。 |