博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对finecms模板的改造sql
阅读量:5820 次
发布时间:2019-06-18

本文共 2007 字,大约阅读时间需要 6 分钟。

对于finecms的模板中不能愉快地写sql语句,好麻烦,对于手册上写的语法,表示脑容量不够没看懂,索性直接改造一下,模板的引擎吧

protected function _listdata($param)    {        if(strpos($param,"|"))        {            $rule  =  '#\|.+?\|#i';            preg_match($rule,$param,$result);            if(!$result) return array();            $sql=substr($result[0],1,-1);            $dbcache=100;            $db = Controller::model('content');            $data = $db->execute($sql, true, $dbcache);           // var_dump(array(  'result' => $data, 'sql' => $sql, 'total' => isset($total) ? $total : count($data)));            return array(  'result' => $data, 'sql' => $sql, 'total' => isset($total) ? $total : count($data));        }
//以下是原来的代码        $_param = explode(' ', $param);        $param = array();
这样的话,就可以愉快地写sql语句了

下面写了个demo,大家可以试下

{list  sql=|select * from  fn_position_data   RIGHT JOIN   fn_content_1 ON `fn_content_1`.`id`=`fn_position_data`.`contentid`  where posid=6   order by fn_position_data.listorder asc| }	{date('y-m-d',$t['inputtime'])}{/list}

但是有一个问题,如果看你的模板就可以直接看到sql语句了,另外了没有对sql语句进行过滤,所以要进一步处理一下,因为这个是临时应付一下,所以暂时先这样

对于模板容易被别人看到的问题,可行的解决办法是这样的,把模板文件的扩展名改为.php ,并在解析模板的时候,去掉php标记就可以了

所以做了以下几点改动

第一,把模板文件的扩展名改为php,并在文件的头部加入了这样一句话<?php exit();?>

第二,修改模板的解析文件,主要的改动

/**	 * 获取视图文件的路径	 */	protected function get_view_file($file_name) {		//return $this->view_dir . $file_name . ((substr($file_name, strrpos($file_name, '.')) == '.html') ? '' : '.html');		return $this->view_dir . $file_name . ((substr($file_name, strrpos($file_name, '.')) == '.php') ? '' : '.php');	}
/**	 * 加载视图文件	 */	protected function load_view_file($view_file) {		if (!is_file($view_file)) {            App::display_error(lang('app-8') . ': ' . $view_file);        }		$view_content = file_get_contents($view_file);        $view_content= substr($view_content, 15);		return $this->handle_view_file($view_content);	}

这样就完成了模板的改造问题,这样,别有用心的人浏览模板文件时就会出现空白页面,起到了保护模板的作用

在做这个改动的时候,查看源文件,发现是在dayrui/core/common.php中引入的文件解析类,

如果要兼容其他的模板可以做一个新的解析类来兼容其它模板文件(个人认为原view类写的太复杂,脑容量小的根本就看不懂啊)

转载地址:http://khzdx.baihongyu.com/

你可能感兴趣的文章
使用membership(System.Web.Security)来进行角色与权限管理
查看>>
opticom 语音质量验证白皮书
查看>>
3D实时渲染中的BSP树和多边形剔除
查看>>
Frank Klemm's Dither and Noise Shaping Page: Dither and Noise Shaping In MPC/MP+
查看>>
网络抓包的部署和工具Wireshark【图书节选】
查看>>
Redis在Windows+linux平台下的安装配置
查看>>
Maven入门实战笔记-11节[6]
查看>>
几篇JavaEye的博客
查看>>
Local declaration of 'content' hides instance variable
查看>>
[zz] C++智能指针循环引用解决
查看>>
ASP.NET中 HTML标签总结及使用
查看>>
Spring 项目中把 SQL 语句写在 .sql 文件中
查看>>
Linux下日志系统的设计
查看>>
linux下mysql Select查询命令及视图
查看>>
容器深入研究
查看>>
DHCP 和 MDT 分开服务器的设置方法
查看>>
【博弈论】【SG函数】bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏
查看>>
【数论】【扩展欧几里得】hdu3579 Hello Kiki
查看>>
jdbc与hibernate的优缺点比较
查看>>
Eclipse中同时打开多个Console
查看>>