PHPCMS V9 二次开发实例–留言本.docx
《PHPCMS V9 二次开发实例–留言本.docx》由会员分享,可在线阅读,更多相关《PHPCMS V9 二次开发实例–留言本.docx(35页珍藏版)》请在三一办公上搜索。
1、PHPCMS V9 二次开发实例留言本下面我们将通讲解一个留言本实例,来帮助你更好的掌握PHPCMS V9的二次开发流程。并在开发过程中体验PHPCMS V9。 在此我们只做基本功能的演示,更多的功能开发,期待你的继续挖掘。 4.1需求分析 本实例用PHPCMS V9基础功能开发设计一个留言本管理系统,要求如下: 后台: 可管理、回复、删除留言信息 可控制留言是否前台显示 可对留言系统配置设置选项,例如是否起用验证码,默认是否显示、是否允许游客留言等配置。模块配置信息可多站点存储。 可批量管理所有未回复留言 后台管理演示效果如下图所示: 前台: 根据后台模块配置选项,控制是否显示在线留言填写表
2、单。 在线提交留言,根据后台配置选项,是否显示验证码,是否需管理员审核显示。 留言列表页,需根据后台配置每页条数进行分页。 前台演示效果如下图所示:4.2数据库和数据表的设计 这里使用Mysql数据库来存储信息。 首先构建一个留言信息表 guestbook , 它有12个字段,即消息编号(gid),站点ID(siteid),标题(title),内容(content),回复内容(reply),回复状态(reply_status),会员ID(uid),会员姓名(username),审核状态(passed) ,留言时间(inputtime),回复人(replyer),回复时间(replytime)。
3、下面是创建该表的SQL代码: CREATE TABLE phpcms_guestbook ( gid smallint(5) NOT NULL auto_increment, title char(80) NOT NULL, content text NOT NULL, reply text NOT NULL, userid mediumint(8) unsigned NOT NULL default 0, username char(20) NOT NULL, gender tinyint(1) unsigned NOT NULL default 0, head tinyint(3) uns
4、igned NOT NULL default 0, email char(40) NOT NULL, qq char(15) NOT NULL, homepage char(25) NOT NULL, hidden tinyint(1) unsigned NOT NULL default 0, passed tinyint(1) unsigned NOT NULL default 0, ip char(15) NOT NULL, addtime int(10) unsigned NOT NULL default 0, replyer char(20) NOT NULL, replytime i
5、nt(10) unsigned NOT NULL default 0, PRIMARY KEY (gid), KEY hidden (hidden,gid); 4.3创建模块目录 PHPCMS v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块,如果要创建一个模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。 当前我们要开发一个叫做guestbook的留言本模块,那么首先在 phpcms/modules 目录下创建文件夹,并将其命名为guestbook。 如下图所示: guestbook 模块的标准结构通常是这样的,如下图所
6、示: 其中 classes 为模块类库包 functions 为模块函数库包 templates 为模块模板包 这里通常放置含有权限控制的控制器模板,也就是后台模板。 如果您的模块有单独的前台模版,你需要在phpcms/templates/default下创建一个您的模块同名目录来放置前台模板,“default”为你的风格包名称,我们默认适用default。 4.4创建数据模型类文件 建好数据表,创建完模块文件夹以后,接下来进行留言本数据模型的创建。 数据库模型位于:phpcms/model/ 目录下。 数据模型文件的命名规则建议为数据表名称+_model.class.php 如果在我们的创建
7、的模块中我要使用一个数据表“test”,首先需要建立一个数据库模型文件,文件名称为test_model.class.php,程序结构如下图: db_config = pc_base:load_config(database); $this-db_setting = default; $this-table_name = test; parent:_construct; ? 在实例中,只需要把加粗字换成当前数据表名即可。 在本例中guestbook_model.class.php数据模型文件为留言本信息表数据模型,结构如下: db_config = pc_base:load_config(dat
8、abase); $this-db_setting = default; $this-table_name = guestbook; parent:_construct; 说明:任何自定义模块的数据模型类,均继承于model.class.php 数据模型基类。在此基类中PHPCMS 系统已经把最常用的数据库操作方法进行了封装。 二次开发者不必关于如何操作数据库,只需要根据需要用到的,已定义操作方法的要求,传递参数即可。系统会自动对数据进行处理,并返回定义结果。 4.5开发模块控制器和函数 在上面的创建模块中我们已经创建好了一个名为“guestbook”的留言本模块,接下来我们继续为这个模块添加两
9、个控制器类。 PHPCMS V9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面。类名也就是文件名+.php,例如一个名为guestbook的控制器,那么他的命名为guestbook.php即可。控制器类默认继承系统的函数库,可以直接使用。需要注意的是:控制器类的类名称与控制器文件名必须相同。 本留言本模块有以下二个控制器 控制器名称 index.php guestbook.php 默认调用控制函数 init init 说明 前台页面控制器 后台管理控制器 下面将对二个控制做分别一个详细介绍。 4.5.1前台index.php控制器开发 前台控制器主要涉及前台留言显示
10、、在线留言的提交处理等功能函数,以下为全部源代码,接下来我们将对每个功能块,做个详细介绍,代码如下图所示: guestbook_db = pc_base:load_model(guestbook_model); $this-_username = param:get_cookie(_username); $this-_userid = param:get_cookie(_userid); /定义站点ID常量,选择模版使用 $siteid = isset($_GETsiteid) ? intval($_GETsiteid) : $this-get_siteid; define(SITEID,$s
11、iteid); /读取配置,设置分页条数 $setting = new_html_special_chars(getcache(guestbook, commons); $this-set = $settingSITEID; public function init /读取配置,设置分页条数 $setting = new_html_special_chars(getcache(guestbook, commons); $set = $settingSITEID; $pagesize = $settingSITEIDpagesize; $where = array(passed=1,siteid
12、=SITEID); $page = isset($_GETpage) & intval($_GETpage) ? intval($_GETpage) : 1; $infos = $this-guestbook_db-listinfo($where, gid DESC,$page, $pages = $pagesize); $infos = new_html_special_chars($infos); $pages = $this-guestbook_db-pages; pc_base:load_sys_class(form, , 0); include template(guestbook,
13、 index); /* * 在线留言 */ public function ly if(isset($_POSTdosubmit) if(isset($_POSTcode) $code = isset($_POSTcode) & trim($_POSTcode) ? trim($_POSTcode) : showmessage(L(input_code), HTTP_REFERER); if ($_SESSIONcode != strtolower($code) showmessage(L(code_error), HTTP_REFERER); $set = $this-set; $link_
14、db = pc_base:load_model(guestbook_model); $_POSTlyaddtime = SYS_TIME; $_POSTlyuserid = $this-_userid; $_POSTlyusername = $this-_username; $_POSTlysiteid = SITEID; $_POSTlypassed = $setcheck_pass; $link_db-insert($_POSTly); showmessage(L(add_success), ?m=guestbook&c=index&siteid=$siteid); else echo $
15、siteid.adsf;exit; $setting = getcache(guestbook, commons); pc_base:load_sys_class(form, , 0); $SEO = seo(SITEID, , L(application_links), , ); include template(guestbook, ly); ? 接下来将对本控制程序的每一段代码后对其进行分析和解释。 defined(IN_PHPCMS) or exit(No permission resources.); 这段程序的作用是用来判断本段程序是否处于PHPCMS的运行范围内,如果不是,则页面
16、提示No permission resources并终止,这在一定程度上避免了脚本包含调用错误引起的被入侵。其他文件中的相同代码段作用与此相同。 class index . 接下来就是对控制器类的定义了,在前面也讲过控制器中类的定义,类名必须要 和本控制器名称相同,本控制器为index.php,所以控制器类名也为index。 function _construct $this-guestbook_db = pc_base:load_model(guestbook_model); $this-_username = param:get_cookie(_username); $this-_user
17、id = param:get_cookie(_userid); /定义站点ID常量,选择模版使用 $siteid = isset($_GETsiteid) ? intval($_GETsiteid) : $this-get_siteid; define(SITEID,$siteid); /读取配置,设置分页条数 $setting = new_html_special_chars(getcache(guestbook, commons); $this-set = $settingSITEID; 上面这段代码是本类的构造函数的定义。在此函数中$this-guestbook_db = pc_base
18、:load_model(guestbook_model); 为加载留言本的数据模型。 $this-_username = param:get_cookie(_username); $this-_userid = param:get_cookie(_userid); 这段代码为取得当前登录会员的会员名(username)和会员ID(userid),以便在下面留言提交处理程序中使用。用于记录存储留言者的信息。 /定义站点ID常量,选择模版使用 $siteid = isset($_GETsiteid) ? intval($_GETsiteid) : $this-get_siteid; define(
19、SITEID,$siteid); 这段代码判断是否有站点ID(siteid)传递,如果存在则获取并转化为整型,没有获取到站点ID,则利用全局函数get_siteid;函数来获取siteid值。此函数定义于global.func.php 文件中。最后把siteid值定义为一个常量,以便接下来的程序使用。 / 读取配置,设置分页条数 $setting = new_html_special_chars(getcache(guestbook, commons); $this-set = $settingSITEID; 接下来上面这段代码,通过getcache(guestbook,commons)函数来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHPCMS V9 二次开发实例留言本 二次开发 实例 留言
链接地址:https://www.31ppt.com/p-3163772.html