ECshop中defined('IN_ECS')的实现原理

在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')的实现原理

时间: 2024-08-02 19:10:14

ECshop中defined('IN_ECS')的实现原理的相关文章

ecshop中猜你喜欢的原理

最近在实现ecshop中的一个猜你喜欢的原理,一直不明白这个是如何猜的,难道是根据最近浏览记录来得到?百思不得其解,就放下了这个问题,一天在百度搜索东西的时候,突然发现这个右边有个猜你喜欢的功能,其实以前也知道,这里有这个版块,只不过没加注意,这次经过仔细观察发现,原来猜你喜欢的时候,就根据你搜索的相关结果,关联出一些同类产品. 举个例子,比如我搜索notepad2的时候,notepad++,editplus等软件就被列入了猜你喜欢的类别中,因此,在ecshop中如果我们记录了用户的浏览记录,通

ecshop中的SESSION机制

ecshop中的session机制不是PHP自带的,而是ecshop自定义的一套机制,这两天利用时间学习了一下,以下是学习笔记. 1.session的初始化是在 includes下的 init.php 文件中,具体代码如下: 1 if (!defined('INIT_NO_USERS')) 2 { 3 /* 初始化session */ 4 include(ROOT_PATH . 'includes/cls_session.php'); 5 6 $sess = new cls_session($d

ecshop 中分页的介绍

分页在一个大型系统中是必不可少的,当数据量过大时,一页显示的内容是有限的,这时我们就想把数据分页展示,下面介绍下mysql下的分页原理,以及ecshop中的分页函数的使用. mysql中的分页主要是通过关键词limit来实现的, limit 可以给以给起始值,然后再给一个范围,就可以逐次地取出所有的数据. 举个简单的例子: create table user(int 10 not null auto_increment, name varchar(20), sex tinyint(1), reg

聊一聊 MySQL 中的事务及其实现原理

原文:聊一聊 MySQL 中的事务及其实现原理 说到数据库,那就一定会聊到事务,事务也是面试中常问的问题,我们先来一个面试场景: 面试官:"事务的四大特性是什么?" 我:"ACID,即原子性(Atomicity).隔离性(Isolation).持久性(Durability).一致性(Consistency)!" 面试官:"在 MySQL 数据库的 InnoDB 引擎是怎么实现这四大特性的?" 我:"这个...这个....,还真没有了解过

ecshop 中的json

ecshop中有2个地方使用了json,一个是cls_json.php文件,一个是transport.js文件. cls_json 封装了json类,可以调用里面的encode的方法,根据参数不同,进行不同的转化,调用json_encode可以直接进行转化.是php对json的处理. transport.js是ecshop封装的ajax方法,通过ajax.call 来实现ajax的调用.ajax传值的过程中,可以选择json来传递,一般也是选择它的,因为这样调用起来方便,转化也方便.所以它对js

联营合营企业顺逆流交易在合并报表中抵消分录的原理讲解

下面通过两道例题来讲解一下处理原理: 逆流交易:例题:甲公司2012年1月1日取得乙公司20%有表决权股份,能够对乙公司施加重大影响.假定甲公司取得该项投资时,乙公司各项资产.负债的账面价值等于公允价值.2012年11月,乙公司将其成本为1200万元的商品以1800万元的价格出售给甲公司,甲公司将其取得的商品作为存货.至2012年12月31日,甲公司未对外出售该批存货.乙公司2012年实现净利润3200万元,假定不考虑所得税因素影响.先对个别报表分录进行分析:甲公司在按照权益法确认应享有乙公司2

ECSHOP中transport.js和jquery的冲突的简单解决办法

ECSHOP中transport.js和jquery的冲突的简单解决办法 一流资源网近日在ECSHOP网站加入了几个JS特效代码,在谷歌.火狐下正常,在各版本IE下都不常,左思不得其解. 最后才知道原来是"ECSHOP中transport.js和jquery的冲突" 因为通用头部文件中引用了 1 {insert_scripts files='transport.js,utils.js'} transport.js与jquery有冲突.原因不多讲.在网上找到一个最简单解决办法: 成功了,

ecshop中的些assign_dynamic(’')

很多做电子商务站的朋友都问我,在ecshop中,里面有个 assign_dynamic('index');这个到底是什么作用来的,这个其实是ecshop中的模板技术,动态处理一些局部信息更新而不被缓存的机制. 先看 assign_dynamic()函数,$sql = 'SELECT id, number, type FROM ' . $GLOBALS['ecs']->table('template') .  " WHERE filename = '$tmp' AND type > 0

关于ecshop中'/library/cat_goods.lbi'的调用来源

library/cat_goods.lbi中 循环代码是这样的, {foreach from=$cat_goods item=goods} 很显然找到$cat_goods这个变量在哪里定义就行了,发现是在这里定义的: includes/libs_goods.php中的assign_cat_goods函数: $GLOBALS['smarty']->assign('cat_goods_' . $cat_id, $goods); 这里对cat_goods进行了全局定义.后发现: includes/li