ecshop不能在模板文件.dwt和.lbi中直接添加php代码的解决方法

ecshop不能在模板文件.dwt和.lbi中直接添加php代码了,为什么呢?

因为直接在模板中加入php函数和代码,没有经过过滤,容易造成安全隐患。程序源码安全是比较重要的。
不过如果有朋友希望能在模板文件中直接加入.dwt和.lbi文件,怎么办呢?需要改动哪些文件呢?
其实,需要改动一个文件,即includes/cls_template.php
打开此文件,找到函数 function fetch_str($source)
在此函数中找到
 if(preg_match_all(‘~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\‘]?php[\"\‘]?)~is‘, $source, $sp_match))
         {
             $sp_match[1] = array_unique($sp_match[1]);
             for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++)
             {
                 $source = str_replace($sp_match[1][$curr_sp],‘%%%SMARTYSP‘.$curr_sp.‘%%%‘,$source);
             }
              for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++)
             {
                  $source= str_replace(‘%%%SMARTYSP‘.$curr_sp.‘%%%‘, ‘<?php echo \‘‘.str_replace("‘", "\‘", $sp_match[1][$curr_sp]).‘\‘; ?>‘." ", $source);
             }
          }          
直接把这一段代码去掉或注释掉。登录一下后台更新缓存就可以了。

原文地址:https://www.cnblogs.com/ecshopdevelop/p/10105474.html

时间: 2024-10-02 09:11:29

ecshop不能在模板文件.dwt和.lbi中直接添加php代码的解决方法的相关文章

ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码的解决方法

ecshop新版不能在模板文件.dwt和.lbi中直接添加php代码了,为什么呢? 因为直接在模板中加入php函数和代码,没有经过过滤,容易造成安全隐患.程序源码安全是非常重要的. 不过如果有朋友希望能在模板文件中直接加入php代码,怎么办呢? 其实,只需要改动一个文件,即includes/cls_template.php 打开此文件,找到函数 function fetch_str($source) 在此函数中找到,大概在288行 if(preg_match_all('~(<\?(?:\w+|=

AndroidStudio中R文件引用失败(Cannot resolve symbol &#39;R&#39;)的解决方法

常见的两种情况参见:http://xichen.pub/2018/04/08/2018-04-08-Android-TimeCat-解决cant-resolve-symbol-R/ 我的情况是:AndroidManifest.xml文件中的package="com.example.activitytest_5"语句出错.如图: 我的项目的实际包名为com.example.activitytest_6,而这里标记为了com.example.activitytest_5,所以导致AS找不到

Centos6.5下rsync文件同步安装及配置当中遇到的问题及解决方法

实验节点如下: 源节点:192.168.0.111 备份节点:192.168.0.112 ------------------------------以下部分在两个节点上执行1.防火墙开放873端口(两个节点)#  /sbin/iptables -I INPUT -p tcp --dport 873 -j ACCEPT#  /etc/rc.d/init.d/iptables save#  service iptables restart 2.关闭selinux(两个节点)#  vi /etc/s

关于matlab2014a中生成dll文件,打包成com组件出现的问题和解决方法

问题1:matlab2014a破解不完整,容易导致package打包失败 解决方法:1.下载破解文档:链接: http://pan.baidu.com/s/1eRJ4E2I 密码: 44th 2.下载后解压,把install.jar以及相应位数的三个文件(compiler.dll,mcc.exe,libmwservices.dll)复制到对应位置替换即可,另外把license.lic改为与MATLAB\licenses文件夹下的那个lic文件同名,复制并替换之. 问题2:如果出现mbuild -

jetty java文件无法删除 java文件占用 delete无效 运行时锁定静态资源的解决方法

前几天jetty下发现java无法删除文件,文件操作后一直被jvm占用,无奈换了tomcat问题消失. 今天又想起来,尝试网上的解决方法,经本人试验,直接修改配置文件有时不能生效,具体原因不清楚,建议使用直接修改web.xml文件 下文中的红色部分 文件被锁定是由于在使用windows系统时,jetty默认在内存中映射了这些文件,而windows会锁定内存映射的文件.解决的办法就是修改jetty的配置,让其在启动server时将useFileMappedBuffer标志位设置为false. 设置

TortoiseSVN文件夹及文件图标、标识、绿色小对号不显示解决方法(转载)

清理电脑的时候,非法删除了svn的已安装文件,重新卸载安装svn,依然绿色对号的小标识不出现,后来搜索后找到了方法. 步骤一 右键-svn设置-图标覆盖-选默认.也有人说这里选择"windows外壳"就好用了,但是对我无效. 步骤二 ① 运行注册表(快捷键win+R),输入regedit打开注册表管理.进入 ② 删掉所有含有Tortoise关键字前边的注册表(删除注册有风险,提醒先备份注册表)或者给这些含有Tortoise关键字的文件夹改名,让他们能够排在最前边(前边再无其他的文件夹)

关于ECSHOP模板架设的服务器php版本过高报错的解决方法(二)

ECShop安装之后,在后台发现一个错误,这个错误提示的意思:mktime()方法不带参数被调用时,会被抛出一个报错提示. ECShop安装之后,在后台发现一个错误提示: Strict Standards: mktime(): You should be using the time() function instead in :\wamp\www\dqzhubao.com\shinamondadmin\sms_url.php on line 31 Strict standards: mktim

ecshop二次开发 购物时为每件商品添加备注信息的修改方法

目标: 用户在选购商品加入购物车前可以为商品添加备注信息 加入购物车后可以在购物车查看备注信息 店主在查看订单时可以看到用户为商品添加的备注信息 用户在个人中心中可以看到商品的备注信息 目标一: 打开ecshop/goods.php,搜索"display"可以看到这句: $smarty->display('goods.dwt', $cache_id); 打开模板目录下的goods.dwt,搜索"<!-- {* 结束循环可选属性 *} -->",在这

用户名不在sudoers文件中此事将被报告的解决方法

以下是root用户下操作 1. cd /etc 来到etc目录下,sudoers文件在该目录下 2. ls -l | grep "sudo" 查看发现sudoers文件的权限是-r--r-----,连root都是只读权限 3. 给sudoers文件添加写的权限 chmod u+w sudoers 4. 将用户名比如test添加到sudoers文件 vi sudoers-->按下i进入编辑状态 找到 root ALL=(ALL)     ALL 下一行添加 test ALL=(AL