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)