- 在 PHP 中经常看到如下代码
- if (!defined(‘IN_ECS’))
- {
- die(‘Hacking attempt’);
- }
- 实现的原因以及原理如下:
- ecshop里的有些.php 页是不需要用户通过 url 直接访问的,用来被其它页调用的,例如/includes/init.php,就不需要直接访问,通过 url 访问你的网址/includes/init.php 是无意义的,所以我们在可以直接方问的 php 里加上 define(‘IN_ECS’, true);
- 例如在 index.php 中有如下代码,一开头就设置 IN_ECS 的值为 true 然后才去加载 init.php 这样 init.php 文件中 IN_ECS 的值就为 true,这时候引入 cls_mysql.php 也可以引入,因为此时 IN_ECS 的值也是为 true
- define(‘IN_ECS’, true);
- require(dirname(__FILE__) . ‘/includes/init.php’);
- 在页面直接访问
- 出现这样的结果
- 在不能直接访问的 php 里加上
- if (!defined(‘IN_ECS’))
- {
- die(‘Hacking attempt’);
- }
- 这样当直接访问 init.php 里就会显不
- Hacking attempt
- 从页起到禁止访问的目的,而其它页面在调用 init.php 时是正常的
- 这样做更安全
- 这也是一种设计思想,防止其它文件不正常调用或者防止前台直接访问文件。
转载请注明:汇站网 » ECshop 中 defined(‘IN_ECS’)的实现原理