ecshop init.php文件分析
1.  ecshop init.php文件分析 
2.  <?php  
3.   
4.  /**  
5.  * ECSHOP 前台公用文件  
6.  * 
===========================================================================
=  
7.  * 版权所有  2005-2008 上海商派网络科技有限公司,并保留所有权利。  
8.  * 网站地址: [url]http://www.ecshop.com[/url];  
9.  * ----------------------------------------------------------------------------  
10.  * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和  
11.  * 使用;不允许对程序代码以任何形式任何目的的再发布。  
12.  * 
===========================================================================
=  
13.  * $Author: likai $  
14.  * $Id: init.php 16132 2009-05-31 08:59:15Z likai $  
15.  */  
16.   
17.  // 禁止跨域引入文件.  
18.  if (!defined('IN_ECS')){  
19.  die('Hacking attempt'); //  黑客企图  
20.  }  
21.   
22.  // 无用代码,后期功能复盖  
23.  error_reporting(E_ALL);  
24.   
25.  // 防止菜鸟将此变量从GET POST 或者新常量定义.  
26.  if (__FILE__ == ''){  
27.  die('Fatal error code: 0');  
28.  }  
29.   
30.  /* 取得当前ecshop所在的根目录  比discuz的复杂  */  
31.  define('ROOT_PATH', str_replace('includes/init.php', '', str_replace('\', '/', __FILE__)));  
32.   
33.  // 判断data目录中的install文件不存在  && include中的安装锁文件不存在 并且没有定义 
NO_CHECK_INSTALL常量,  就跳转到安装页.  
34.  if (!file_exists(ROOT_PATH . 'data/install.lock') && !file_exists(ROOT_PATH . 'includes/install.lock')  
35.  && !defined('NO_CHECK_INSTALL'))  
36.  {  
37.  header("Location: ./install/index.phpn");  
38.  exit;  
39.  }  
40.   
41.  /* 初始化设置  */  
42.  @ini_set('memory_limit', '64M');  
43.  @ini_set('session.cache_expire', 180);  
44.  @ini_set('session.use_trans_sid', 0);  
45.  @ini_set('session.use_cookies', 1);  
46.  @ini_set('session.auto_start', 0);  
47.  @ini_set('display_errors', 1); //  开启报错.  
48.   
49.  //设置通用的引入目录. wind 是  .;  新的目录  linux是  .:  就是以什么为分隔.  
50.  if (DIRECTORY_SEPARATOR == '\'){  
51.  @ini_set('include_path', '.;' . ROOT_PATH);  
52.  }  
53.  else  
54.  {  
55.  @ini_set('include_path', '.:' . ROOT_PATH);  
56.  }  
57.  // 引入配置文件.简单的配置.  
58.  require(ROOT_PATH . 'data/config.php');  
59.   
60.  // 养成良好的习惯,  凡是常量定义,都判断一下是否已经定义过.  
61.  if (defined('DEBUG_MODE') == false){  
62.  define('DEBUG_MODE', 0); //  定义为0  
63.  }  
64.   
65.  //版本判断,  如果版本低于5.1 并表$timezone不为空. $timezone来自  config.php文件  
66.  if (PHP_VERSION >= '5.1' && !empty($timezone))  
67.  {  
68.  date_default_timezone_set($timezone); //  设置通用时区.  
69.  }  
70.   
71.  //获得当前文件,不包括GET;  
72.  $php_self = isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : 
$_SERVER['SCRIPT_NAME'];  
73.   
74.  // 假如用户访问的是目录,  就自动添加index.php默认页.  
75.  if ('/' == substr($php_self, -1)){  
76.  $php_self .= 'index.php';  
77.  }  
78.  // 然后将当前页路径定义为常量,PHP_SELF;  没有域名导向的.  
79.  define('PHP_SELF', $php_self);  
80.   
81.  // 开始引入文件了.日后再一个一个分析.  
82.  require(ROOT_PATH . 'includes/inc_constant.php');  
83.  require(ROOT_PATH . 'includes/cls_ecshop.php');  
84.  require(ROOT_PATH . 'includes/cls_error.php');  
85.  require(ROOT_PATH . 'includes/lib_time.php');  
86.  require(ROOT_PATH . 'includes/lib_base.php');  
87.  require(ROOT_PATH . 'includes/lib_common.php');  
88.  require(ROOT_PATH . 'includes/lib_main.php');  
89.  require(ROOT_PATH . 'includes/lib_insert.php');  
90.  require(ROOT_PATH . 'includes/lib_goods.php');  
91.  require(ROOT_PATH . 'includes/lib_article.php');  
92.   
93.  /* 对用户传入的变量进行转义操作。*/ //通用转义方法.  没discuz优化.  
94.  if (!get_magic_quotes_gpc())  
95.  {  
96.  if (!empty($_GET))  
97.  {  
98.  $_GET = addslashes_deep($_GET);  
99.  }  
100.  if (!empty($_POST))  
101.  {  
102.  $_POST = addslashes_deep($_POST);  
103.  }  
104.   
105.  $_COOKIE = addslashes_deep($_COOKIE);  
106.  $_REQUEST = addslashes_deep($_REQUEST);  
107.  }  
108.   
109.  /* 创建  ECSHOP 对象  */  
110.  $ecs = new ECS($db_name, $prefix);  
111.   
112.  //定义数据目录及图片目录.  
113.  define('DATA_DIR', $ecs->data_dir());  
114.  define('IMAGE_DIR', $ecs->image_dir());  
115.   
116.  /* 初始化数据库类  */  
117.  require(ROOT_PATH . 'includes/cls_mysql.php');  
118.  $db = new cls_mysql($db_host, $db_user, $db_pass, $db_name);  
119.  // 设置不充许缓存的表,  比如用户动作,栏目.  
120.  $db->set_disable_cache_tables(array($ecs->table('sessions'), $ecs->table('sessions_data'), 
$ecs->table('cart')));  
121.  $db_host = $db_user = $db_pass = $db_name = NULL;  
122.   
123.  /* 创建错误处理对象  */  
124.  $err = new ecs_error('message.dwt');  
125.   
126.  /* 载入系统参数  */  
127.  $_CFG = load_config();  
128.   
129.  /* 载入语言文件  */  
130.  require(ROOT_PATH . 'languages/' . $_CFG['lang'] . '/common.php');  
131.  if ($_CFG['shop_closed'] == 1)  
132.  {  
133.  /* 商店关闭了,输出关闭的消息  */  
134.  header('Content-type: text/html; charset='.EC_CHARSET);  
135.   
136.  die('<div style="margin: 150px; text-align: center; font-size: 14px"><p>' . $_LANG['shop_closed'] . 
'</p><p>' . $_CFG['close_comment'] . '</p></div>');  
137.  }  
138.   
139.  if (is_spider())  
140.  {  
141.  /* 如果是蜘蛛的访问,那么默认为访客方式,并且不记录到日志中  */  
142.  if (!defined('INIT_NO_USERS'))  
143.  {  
144.  define('INIT_NO_USERS', true);  
145.  /* 整合UC后,如果是蜘蛛访问,初始化UC需要的常量  */  
146.  if($_CFG['integrate_code'] == 'ucenter')  
147.  {  
148.  $user = & init_users();  
149.  }  
150.  }  
151.  $_SESSION = array();  
152.  $_SESSION['user_id'] = 0;  
153.  $_SESSION['user_name'] = '';  
154.  $_SESSION['email'] = '';  
155.  $_SESSION['user_rank'] = 0;  
156.  $_SESSION['discount'] = 1.00;  
157.  }  
158.   
159.  if (!defined('INIT_NO_USERS'))  
160.  {  
161.  /* 初始化session */  
162.  include(ROOT_PATH . 'includes/cls_session.php');  
163.   
164.  $sess = new cls_session($db, $ecs->table('sessions'), $ecs->table('sessions_data'));  
165.   
166.  define('SESS_ID', $sess->get_session_id());  
167.  }  
168.   
169.  if (!defined('INIT_NO_SMARTY'))  
170.  {  
171.  header('Cache-control: private');  
172.  header('Content-type: text/html; charset='.EC_CHARSET);  
173.   
174.  /* 创建  Smarty 对象。*/  
175.  require(ROOT_PATH . 'includes/cls_template.php');  
176.  $smarty = new cls_template;  
177.   
178.  $smarty->cache_lifetime = $_CFG['cache_time'];  
179.  $smarty->template_dir = ROOT_PATH . 'themes/' . $_CFG['template'];  
180.  $smarty->cache_dir = ROOT_PATH . 'temp/caches';  
181.  $smarty->compile_dir = ROOT_PATH . 'temp/compiled';  
182.   
183.  // 判断一下是否进行更新.  
184.  if ((DEBUG_MODE & 2) == 2)  
185.  {  
186.  $smarty->direct_output = true;  
187.  $smarty->force_compile = true;  
188.  }  
189.  else  
190.  {  
191.  $smarty->direct_output = false;  
192.  $smarty->force_compile = false;  
193.  }  
194.   
195.  // 熟悉的smarty的注入.  
196.  $smarty->assign('lang', $_LANG);  
197.  $smarty->assign('ecs_charset', EC_CHARSET);  
198.  // 设置CSS文件.  
199.  if (!empty($_CFG['stylename']))  
200.  {  
201.  $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style_' . $_CFG['stylename'] . '.css');  
202.  }  
203.  else  
204.  {  
205.  $smarty->assign('ecs_css_path', 'themes/' . $_CFG['template'] . '/style.css');  
206.  }  
207.   
208.  }  
209.   
210.  if (!defined('INIT_NO_USERS'))  
211.  {  
212.  /* 会员信息  */  
213.  $user =& init_users();  
214.   
215.  if (!isset($_SESSION['user_id']))  
216.  {  
217.  /* 获取投放站点的名称  */  
218.  $site_name = isset($_GET['from']) ? $_GET['from'] : addslashes($_LANG['self_site']);  
219.  $from_ad = !empty($_GET['ad_id']) ? intval($_GET['ad_id']) : 0;  
220.   
221.  $_SESSION['from_ad'] = $from_ad; //  用户点击的广告ID  
222.  $_SESSION['referer'] = stripslashes($site_name); //  用户来源  
223.   
224.  unset($site_name);  
225.   
226.  if (!defined('INGORE_VISIT_STATS'))  
227.  {  
228.  visit_stats();  
229.  }  
230.  }  
231.   
232.  if (empty($_SESSION['user_id']))  
233.  {  
234.  if ($user->get_cookie())  
235.  {  
236.  /* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券  */  
237.  if ($_SESSION['user_id'] > 0)  
238.  {  
239.  update_user_info();  
240.  }  
241.  }  
242.  else  
243.  {  
244.  $_SESSION['user_id'] = 0;  
245.  $_SESSION['user_name'] = '';  
246.  $_SESSION['email'] = '';  
247.  $_SESSION['user_rank'] = 0;  
248.  $_SESSION['discount'] = 1.00;  
249.  if (!isset($_SESSION['login_fail']))  
250.  {  
251.  $_SESSION['login_fail'] = 0;  
252.  }  
253.  }  
254.  }  
255.   
256.  /* 设置推荐会员  */  
257.  if (isset($_GET['u']))  
258.  {  
259.  set_affiliate();  
260.  }  
261.  if (isset($smarty))  
262.  {  
263.  $smarty->assign('ecs_session', $_SESSION);  
264.  }  
265.  }  
266.  // 修改报错级别.  
267.  if ((DEBUG_MODE & 1) == 1)  
268.  {  
269.  error_reporting(E_ALL);  
270.  }  
271.  else  
272.  {  
273.  error_reporting(E_ALL ^ E_NOTICE);  
274.  }  
275.  if ((DEBUG_MODE & 4) == 4)  
276.  {  
277.  include(ROOT_PATH . 'includes/lib.debug.php');  
278.  }  
279.   
280.  /* 判断是否支持  Gzip 模式  */  
281.  if (!defined('INIT_NO_SMARTY') && gzip_enabled())  
282.  {  
283.  ob_start('ob_gzhandler');  
284.  }  
285.  else  
286.  {  
287.  ob_start();  
288.  }  
289.   
290.  ?>
ecshop init.php文件分析的更多相关文章
- ecshop init.php文件分析(转)
		<?php /** * ECSHOP 前台公用文件 */ //防止非法调用 defined-判断常量是否已定义,如果没返回false if (!defined('IN_ECS')) { die( ... 
- ecshop代码分析一(init.php文件)
		ecshop代码分析一(init.php文件) 因为工作原因,需要对ecshop二次开发,顺便记录一下对ecshop源代码的一些分析: 首先是init.php文件,这个文件在ecshop每个页面都 ... 
- Android源码分析(十七)----init.rc文件添加脚本代码
		一:init.rc文件修改 开机后运行一次: chmod 777 /system/bin/bt_config.sh service bt_config /system/bin/bt_config.sh ... 
- ecshop后台admin文件夹任意更改名
		为了ecshop网站安全起见或不想泄露后台的路径,那么我们必须修改后台admin文件夹名称. 方法和步骤如下: 把原admin文件夹名改成edait为例来说明 首先,把商城根目录下的admin文件夹重 ... 
- linux系统 initrd.img中init启动脚本分析
		概述:这篇文章主体内容来源于网上转载.前面几篇文章倾向于制作initrd.img,这篇文章更倾向于initrd.img的运行过程:加载framebuff驱动 ide驱动和文件系统驱动,最后进入到真正的 ... 
- 简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析【转】
		转自:https://blog.csdn.net/sctq8888/article/details/7398776 转载自:http://hi.baidu.com/deep_pro/blog/item ... 
- - Gradle 翻译 Analyzer APK文件分析 MD
		目录 目录 APK文件分析 使用 APK 分析器分析您的编译版本 查看文件和大小信息 查看 AndroidManifest.xml 查看 DEX 文件 过滤DEX文件树视图 加载 Proguard 映 ... 
- java:Servlet(Create,LifeCycle,ServletWeb.xml文件的配置,交互式,Tomcat文件分析,单例安全模式)
		1.Servlet: Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容.这个过程为: 客户端发送请求至服务器端: 服务器将请求信息发送至 Servlet: Servlet ... 
- Android中的 init.rc文件简介
		init.rc脚本是由Android中linux的第一个用户级进程init进行解析的. init.rc 文件并不是普通的配置文件,而是由一种被称为"Android初始化语言"(An ... 
随机推荐
- 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
			谷歌用一个变了身的古老「穷举算法」,披上「神经网络」的画皮,假装「跨时代」的黑科技,忽悠广大「膜拜者」,「狮仙」我实在看不下去了,来揭一揭这只幺蛾子小狗的画皮. 本期是移动开发精英俱乐部的第10期推荐 ... 
- HDU 1753 大明A+B(字符串模拟,简单题)
			简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ... 
- sun.misc.unsafe类的使用
			http://blog.csdn.net/fenglibing/article/details/17138079 
- 查找数N二进制中1的个数(JS版 和 Java版)
			(function(){ function getOne(n) { var c = 0; for(var i = 0;i < 32;i ++){ if(((1 << i) & ... 
- cojs 简单的求和问题 解题报告
			一个上午写了两个数据生成器,三个暴力和两个正解以及一个未竣工的伪正解思路 真是累死本宝宝了 首先这个题目暴力我的数据是有很多良心分的 但是不同的暴力拿到的分数也会有所差距,由于是题解就不说暴力怎么写了 ... 
- lintcode :Ugly Numbers 丑数
			题目 丑数 设计一个算法,找出只含素因子3,5,7 的第 k 大的数. 符合条件的数如:3,5,7,9,15...... 样例 如果k=4, 返回 9 挑战 要求时间复杂度为O(nlogn)或者O(n ... 
- Pythonxy下载链接
			http://pythonxy.connectmv.com/ 版权声明:本文为博主原创文章,未经博主允许不得转载. 
- lintcode: 有效的括号序列
			题目: 有效的括号序列 给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and']', 判定是否是有效的括号序列. 样例 括号必须依照 "() ... 
- 【nginx运维基础(6)】Nginx的Rewrite语法详解
			概述 重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力:而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接:它还可以提高你的网 ... 
- Filter(过滤器)常见应用
			孤傲苍狼 只为成功找方法,不为失败找借口! javaweb学习总结(四十六)——Filter(过滤器)常见应用 一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html F ... 
