ECshop模板机制整理

ECShop 3.x Referer注入漏洞深度剖析:从SQL注入到GetShell的完整攻击链实战 SQL注入作为Web安全领域的经典漏洞类型,其核心原理在于应用程序未对用户输入进行充分验证和过滤,导致攻击者能够将恶意SQL代码注入到后端数据库查询中,从而窃取、篡改或破坏数据。这项技术的危害性极大,常被用于获取数据库敏感信息、绕过认证,甚至在特定条件下实现远程代码执行。在电商、内容管理等Web应用场景中,SQL注入是威胁数据安全的主要风险之一。本文聚焦于一个经典案例——ECShop电商系统的安全测试,深入解析其Referer头部处理不当引发的SQL注入漏洞(热词:Referer头注入漏洞),并演示如何结合 阅读详情

ECshop模板机制整理

模板机制

近期新项目涉及到ECshop的二次开发,趁此良机正好可以对闻名已久的ECshop系统进行深入了解。要了解一个系统,那么该系统的模板机制就是最重要的一环。相关整理如下:

一、模板引擎:

ECshop给我的第一印象是用的smarty模板引擎,可是很快就发现有些不一样,使用smarty模板引擎的系统通常会至少会包括smarty的核心文件:smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,而在ECshop中并没用发现smarty的核心类。还是通过程序寻找答案吧,在前台或者后台的公用文件init.php中$smarty对象的初始化中,可以看到加载的模板引擎文件是cls_template.php,原来ECshop团队对smarty的核心部分做了整理及修改,这个引擎相对更加精简,但是使用的时候可能需要注意,不是所有的smarty语法都可以在ECshop中使用,要使用还需修改模板引擎。

二、数据处理:

ECshop根目录下及admin目录下的文件是对应前台、后台页面的数据处理页,在这些文件中对页面所要展示的内容进行处理,之后通过smarty的assign()方法注册变量,最后通过display()方法加载相应的模板文件。但这里我们需要注意ECshop单独封装的几个方法,用于处理模板的公共内容及页面中某些动态内容的加载。如lib_main.php中的assign_template()会设置我们的网店的公共信息及网站设置;assign_dynamic()方法则是设置该页面中的动态加载内容。当页面所需的变量设置完成后,进入smarty的display()方法。

三、解析模板

首先,在ECshop中有.dwt和.lbi两种格式的模板文件,那么这两种文件之间是什么关系呢?可以这样理解.dwt文件是针对前台每个显示页面的模板“框架”,而.lbi模板中则是对页面中公共“内容”的整理,每个.lbi文件都是页面中的一个模块。二者是怎样关联到一起的呢?在模板文件夹中有一个libs.xml文件,这里则是具体配置每个模板“框架”中可以显示哪些“内容”(具体内容之后谈及模板管理会细说)。

下面查看解析模板的过程,在.dwt文件中根据框架的设计会划分出几个“可编辑区域”,.lbi模板正是加载到“可编辑区域”中进行输出的。那么我们需要注意的是.dwt模板中的几对标签:

①<!--TemplateBeginEditable name="右边主区域"--><!-- TemplateEndEditable-->这对标签就是“可编辑区域”标签,在这对标签之间输出的内容是可以通过模板管理进行设置的。主要是选择输出不同的.lbi文件。

②<!--#BeginLibraryItem "/library/page_header.lbi"--><!-- #EndLibraryItem-->这对标签则是对相应的page_header.lbi文件的加载及输出。这个头部的模板每个页面都需要加载,如果我们想更改模板中的头部内容,只要修改page_header.lbi即可,大大提高了效率。

模板文件加载完成之后,即可通过smarty引擎解析smarty标签,完成模板的输出。

 


模板修改

经常可以看到ecshop的dwt文件里面有“<!-- TemplateBeginEditable name="doctitle" -->和<!-- #BeginLibraryItem "/library/page_header.lbi" --><!-- #EndLibraryItem -->”这么一段代码,有很多朋友误认为只是注释代码,这里首先来介绍一下#BeginLibraryItem这段代码。可以看到后面有“page_header.lbi“这个.lbi文件是一个库文件,打开后发现里面就是一些html代码,index.dwt为模板,那么这个.lbi可以理解为模板index.dwt的子模板,.lbi专门供别的的dwt模板导入的子模板. 那么 TemplateBeginEditable这个又是干什么用的呢? 很多人知道这个是可编辑区域的意思,意思就是在TemplateBeginEditable 和 TemplateEndEditable之间的位置是可编辑区域,具体的我们来举个例字。首先我们到ecshop 管理员后台的模板管理->设置模板里面可以看到以下这个

可以看到上面的默认选择了首页模板,假如当你将 商品分类树 选择为右边主区域 点击确定之后 清楚缓存,在刷新首页这是你会发现,原来的 商品分类树 从左边跑到右边了。在上面的下拉框中我们看到只有三个选择,右边主区域,左边主区域,广告位,如果你想多加几个选项,那么很简单,只要你在你要改的模板内多加上几个就行了,假如你要在index.dwt模板添加   “左上角主区域”,和“右下角主区域”,那么你可以在index.dwt 里面加入

<!-- TemplateBeginEditable name="左上角主区域" -->
<!-- TemplateEndEditable -->

<!-- TemplateBeginEditable name="右上角主区域" -->
<!-- TemplateEndEditable -->

这是你再到后台,模板设置里面看首页的选项中就有这个选项


下面我来讲解一下怎么制作自己的模板, 我拿index.dwt为例, 首先在\themes\default\下将index.dwt文件拷贝一份改名为home.dwt在<body>里面加一句话 "这是自己定义的home.dwt模板" 以方便调试, 同样在根目录下的index.php文件拷贝一份改名为home.php里面加一行 echo '这是自己定义的home.php'; 代码以便调试 同时把$smarty->display('index.dwt', $cache_id);改为$smarty->display('home.dwt', $cache_id);然后 清楚缓存 在浏览器通过http://localhost/ecshop/home.php执行你会发现这个页面跟首页一样,只是多了一段 "这是自己定义的home.php 这是自己定义的home.dwt模板" 文字。 当然home.php 和home.dwt 文件里面的内容可以自己定义.
当你再到后台模板管理->设置模板 里面的 选择模板下拉框选项中没有你加的home模板,这时你就要在\admin\includes\lib_template.php里配置一下。在代码”$template_files = array('index.dwt', “ 加上你的模板”$template_files = array('home.dwt','index.dwt',“ ,告诉系统有home.dwt这么一个模板,其次在$page_libs = array( 这个二位数组里面的 'index' => array( 这个数组拷贝一份,改名为home ,意思就是告诉系统你这个home模板里面可以导入哪些.lbi文件.这点配置还不够,你还要在\languages\zh_cn\admin/template.php语言包里面加一行$_LANG['template_files']['home'] = 'Myhome模板';代码.然后你再到后台模板管理->设置模板可以看到如下结果
  
你会发现下拉框中多了一个Myhome模板选项,当你点击旁边的确定按钮时会报错,这是因为你还有一个xml文件没修改,打开themes\default\libs.xml文件,将 <file name="index.dwt"> 节点内的代码拷贝一份把节点名改为<file name="home.dwt">这时你再来重复上次的操作点击旁边的确定,就不会报错了。

接下来我们制作.lbi库文件
首先我们在\themes\default\library\目录下新建一个home.lbi文件 里面输入"这是我自的lbi文件"然后在\admin\includes\lib_template.php文件里面,你刚才新加的'home' => array(home数组里面 添加你的home.lbi 既在这个数组末尾加'/library/home.lbi' => 0 同样像修改模板一样在\languages\zh_cn\admin\template.php 里面加入一行 $_LANG['template_libs']['home'] = 'Myhome库文件'; 代码 这时你到后台 模板管理->库项目管理 你就会发现刚刚你加的库文件出来了。


里面代码可以自己修改

这时候你再到 模板管理->设置模板->选择Myhome模板 确定后,下面可以发现你要编辑的lbi出来了,

默认是非可编辑区库文件如果你要变为可选择项那么你可以到\themes\default\libs.xml文件里找到刚才你加的   <file name="home.dwt"><region name="左边区域">里面加上<lib>home</lib>你再回来看就可以了。记得要把后面对应的显示复选框勾选上,否则你保存不了你的选择。

这时你再来访问http://localhost/ecshop/home.php 你会发现 "这是我自的lbi文件" 文字出来了。

另外需要补充一下的

遵循如下3步骤
     1 在library 里面新建 lbi 文件,比如 phpsir.lbi , 请设置 777,到后台库项目里面就能看到和可以编辑 phpsir.lbi
     2 修改 admin/includes/lib_template.php 里面的 $page_libs 变量
     3 在 libs.xml 里面找对应模板dwt文件,里面写入 <lib>phpsir</lib>

到后台模板设置,就可以调整此块内容居于左右位置了

打造专业电商平台 - ECShop仿京东商城模板实战教程 本文还有配套的精品资源,点击获取 简介:ECShop是基于PHP和MySQL的开源电商平台,旨在提供强大的在线商店解决方案。本教程详细介绍了一款模仿京东商城风格的ECShop模板设计,包括用户体验优化、响应式布局、商品管理、购物车结算、商品详情、促销活动、客户服务、安全性、安装定制、维护升级以及性能优化等各个方面。用户通过本教程能够了解到如何使用ECShop模板快速搭建起具... 阅读详情

相关推荐

ECShop CoolBlue模板——打造高效美观的在线购物体验

本文还有配套的精品资源,点击获取 简介:ECShop CoolBlue模板是专为ECShop开源电子商务系统设计的一种清新、专业的主题样式。模板包含响应式设计、商品分类、购物车、用户注册登录、订单处理、支付接口集成、评价系统、物流跟踪、客服联系、SEO优化和后台管理等功能。CoolBlue模板以蓝色调为主,旨在通过优化的用户体验吸引并留住用户,提高购物平台的吸引力。 ...

weixin_35364187的博客 1222

ectouch第七讲 之ECshop模板机制整理

网上的资源感觉还是有些用,可以看看,帮助理解,ECshop模板机制整理原文:http://blog.sina.com.cn/s/blog_6900af430100nkn8.html 一、模板引擎: ECshop给我的第一印象是用的smarty模板引擎,可是很快就发现有些不一样,使用smarty模板引擎的系统通常会至少会包括smarty的核心文件:smarty.class.php、s...

weixin_30507481的博客 115

ECShop电子商务系统模板定制指南

本文还有配套的精品资源,点击获取 简介:ECShop是一个基于PHP的开源电子商务平台,其模板系统允许用户通过定制设计来改变商店的外观和布局。模板设计覆盖前端展示页面和后台管理界面,以提供一致和吸引人的购物体验。本指南详细介绍了ECShop模板的组成部分,以及如何下载、上传、启用和配置模板以满足商家的特定需求。同时,也探讨了如何通过修改代码和使用插件系统来增强模板的功能性和...

weixin_42515340的博客 1779

ectouch java_ectouch第七讲 之ECshop模板机制整理

一、模板引擎:ECshop给我的第一印象是用的smarty模板引擎,可是很快就发现有些不一样,使用smarty模板引擎的系统通常会至少会包括smarty的核心文件:smarty.class.php、smarty_Compiler.php、config_File.class.php和debug.tpl,而在ECshop中并没用发现smarty的核心类。还是通过程序寻找答案吧,在前台或者后台的公用文件...

weixin_33488806的博客 177

ECSHOP DOSSY模板:美观且功能强大的电子商务平台设计

本文还有配套的精品资源,点击获取 简介:ECSHOP DOSSY模板是一款专门为ECSHOP设计的电子商务模板,它使用了HTML5和CSS3技术来提升用户的浏览体验和交互效果。模板的设计充分考虑了用户体验优化、SEO友好、模块化设计、购物功能集成、自定义配置、多语言支持以及安全性和稳定性。ECSHOP DOSSY模板旨在为用户提供一个既美观又功能强大的在线购物环境,商家可以...

weixin_42389113的博客 1037

ecshop模板制作引导手册.pdf

ecshop模板制作引导手册.pdf

ecshop 模板机制

ECShop模板是基于smarty 文件名cls_template.php lib_main.php中的assign_template()会设置我们的网店的公共信息及网站设置;assign_dynamic()方法则是设置该页面中的动态加载内容。当页面所需的变量设置完成后,进入smarty的display()方法。 首先,在ECshop中有.dwt和.lbi两种格式的模板文件,那么这两种文件...

weixin_30877755的博客 140

ecshop模板类

增加了 加减乘除 的运算,时间戳转日期格式,字符串截取,编码转换

ecshop二次开发手册

关于ECSHOP ECShop是Comsenz公司推出的一款B2C独立网店系统,适合企业及个人快速构建个性化 网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。 ECShop悉心听取每一位商家的需求与建议,不仅设计了人性化的网店管理系统帮助商家 快

rh09jhl的专栏 6477

ecshop模板

ecshop模板

ecshop 模板使用手册

php ecshop 模板制作引导手册 ,非常详细,

ecshop 解密index.php,Ecshop后台拿shell方法总结

方法一:龙儿心发明的,版本未定,估计都行。进入后台-系统设置-Flash播放器管理可以上传任意文件。[includes/fckeditor /editor/filemanager/connectors/php/config.php文件对Media没有任何限制,直接Type=Media 上传你的webshell,访问路径为http://target/images/upload/Media/xxx.p...

weixin_29234423的博客 486

20套ECSHOP网站整站模板.zip

20套ECSHOP网站整站模板.zip 1 亲测:爱之谷.rar 2 亲测:京东完美版.rar 3 亲测:乐淘.rar 4 亲测:缤购.rar 5 亲测:一号店.rar 6 亲测:一号店版本2.rar 7 亲测:梦芭莎.rar 8 亲测:时尚起义.rar 9 亲测:苏宁易购.rar 10 亲测:趣玩.rar 11 亲测:醉品.rar 12 亲测:小米网.rar 13 亲测:我买网.rar 14 亲测:和茶.rar 15 亲测:也买酒.rar 16 亲测:聚美优品.zip 17 亲测:便利100.zip 18ecshop红孩子2014最新版.zip

Ecshop后台拿shell方法总结

方法一:龙儿心发明的,版本未定,估计都行。 进入后台-系统设置-Flash播放器管理 可以上传任意文件。 [includes/fckeditor /editor/filemanager/connectors/php/config.php文件对Media没有任何限制,直接Type=Media 上传你的webshell,访问路径为http://target/images/upload/M

AI 前沿技术实战博客:LLM / Agent / AI 制药 / 生信四大栏目日更,硬核干货 + 可复现代码,看完就能上手 6914

ecshop在后台设置模版添加页面方法详解.pdf

ecshop在后台设置模版添加页面方法详解.pdf

开源DIY龙门架:从零构建可编程运动控制平台

运动控制是自动化与机器人技术的核心基础,它通过精确指令驱动执行机构,实现物体的定位与轨迹规划。其原理通常涉及控制器、驱动器、电机与传动机构的协同工作,核心价值在于将数字指令转化为精准的物理运动,从而解放人力并提升作业一致性。在工业自动化、桌面制造(如3D打印、激光雕刻)及教育机器人等领域应用广泛。本文聚焦于一个具体的工程实践案例:使用**铝型材**、**3D打印**零件、Arduino控制器及步进电机,从机械结构设计、电路连接到代码编写,手把手教你打造一个模块化、可扩展的开源龙门架系统。该系统不仅成本可控,

weixin_33168937的博客 614

ecshop活动页_ECShop:专题活动

举个例子,当情人节快到的时候。店主可以设置一个情人节的专题,将各种礼品分门别类的整理起来,套用一个专用的模板形成一个独立的专题页面,这就使用到专题活动的功能。下面就介绍一下 ECShop 系统的专题活动的添加使用情况。ECShop 系统的专题活动的添加使用分两步完成:一、添加专题活动。二、将添加好的专题活动发布到广告列表、或是发布到 FLASH 播放列表,以便在前台展示。一、下面就介绍专题管理的添...

weixin_39692253的博客 291

告别机载网络通信混乱:利用ARINC825的LCC与带宽管理机制构建高可靠CAN总线

本文深入探讨了ARINC825规范如何通过逻辑通信通道(LCC)和带宽管理机制解决机载CAN总线通信的混乱问题。文章详细解析了ARINC825的核心架构设计、LCC工程实现、时间触发带宽管理等关键技术,展示了其在提升航空电子系统可靠性和实时性方面的显著效果,为现代飞机通信系统提供了高可靠解决方案。

weixin_26878995的博客 241

ecshop mysql 30秒_ecshop数据库字段说明汇总

ecs_account_log // 用户账目日志表ecs_activity // 活动表(代码,名称,开始,结束,描述)ecs_ad // 广告表(位置,类型,名称,链接,图片,开始,结束,广告主相关信息,点击, 是否显示)ecs_admin_action // 管理权限分配(父类ID,权限代码)ecs_admin_log // 管理日志(登陆时间,登陆管理员ID,操作描述,IP)ecs_adm...

weixin_39970166的博客 170

ZYNQ出现问题及解决办法汇总(一直更新)

问题目录使用软件及开发板版本一,vitis在build project时卡住。二,Could not find FPGA device on the board for connection 'Local'三,FPGA configuration failed:DONE PIN is not high四,Could not find ARM device on the board for connection 'Local' 使用软件及开发板版本 开发板:MZ7XA-7020 软件:vitis2020.2(

qq_45057368的博客 1万+

别再写前端了!用Gradio 3.x + HuggingFace Spaces,5分钟把你的Python算法变成网页应用

本文介绍如何利用Gradio 3.x和HuggingFace Spaces快速将Python算法转化为网页应用,无需前端开发经验。通过5行代码和简单的Git命令,即可实现专业级Web界面部署,大幅提升算法展示效率。特别适合算法工程师和数据科学家快速分享模型成果。

weixin_33443333的博客 329
上一篇: zen-Coding在Notepad++中的使用
下一篇: ECShop代码剖析
testing2007
博客等级 码龄19年 46粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值