0

0

ecshop init.php文件分析_PHP教程

php中文网

php中文网

发布时间:2016-07-20 11:13:09

|

1180人浏览过

|

来源于php中文网

原创

1.  ecshop init.php文件分析
2.  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.  /* 创建错误处理对象  */ 
124124.  $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('

' . $_lang['shop_closed'] .
'

AIBox 一站式AI创作平台
AIBox 一站式AI创作平台

AIBox365一站式AI创作平台,支持ChatGPT、GPT4、Claue3、Gemini、Midjourney等国内外大模型

下载

' . $_CFG['close_comment'] . '

'); 
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.  ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440381.htmlTechArticle1. ecshop init.php文件分析 2. ?php 3. 4. /** 5. * ECSHOP 前台公用文件 6. * =========================================================================== = 7. * 版权所有...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Ecshop基础教程
Ecshop基础教程

共5课时 | 1.4万人学习

后盾网ECShop从入门到精通视频教程
后盾网ECShop从入门到精通视频教程

共42课时 | 9.6万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号