服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > ecshop教程 >

ecshop模板不支持引入PHP语句的解决方法

时间:2016-10-17 02:05来源:未知 作者:最模板 点击:
ECSHOP二次开发中有时为了开发的方便,会把一些PHP的程序直接加入到模板文件中去,以便于快捷调试,官方考虑到安全问题,特别将模板中引入的PHP程序进入过滤处理,导致PHP这种快捷
ECSHOP二次开发中有时为了开发的方便,会把一些PHP的程序直接加入到模板文件中去,以便于快捷调试,官方考虑到安全问题,特别将模板中引入的PHP程序进入过滤处理,导致PHP这种快捷调试无法继续往下进行,那么如何来处理这个问题呢,请继续往下读。
首页找到includes目录下的cls_template.php程序文件,并打开,查找约293行function fetch_str($source)函数方法,找到如下代码:
 
$source = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$source);  
替换为下面一段代码,不需要替换处理可直接删除或在前面加上//注释掉。
 
//$source = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$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]).'\'; ?>'."\n", $source);  
            }  
         }  
删除即可,最后后台清除缓存,使用最简单一的句代码加入到模板页内来测试下输出:
复制内容到剪贴板折叠XML/HTML 代码
<?php  
echo "test...."  
?>  
(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(2)
100%
------分隔线----------------------------