当前位置: 首页 > 图文教程 > 网络编程 > PHP > DISCUZ架构:积分系统代码分析一

PHP
用PHP生成html分页列表的代码
php中的session完全教程
PHP session常见问题集锦及解决办法总结
PHP 中dirname(_file_)讲解
PHP_MySQL教程-第一天
PHP_MySQL教程-第二天while循环与数据库操作
PHP_MySQL教程-第三天 基本函数
一篇不错的PHP基础学习笔记
PHP5中的this,self和parent关键字详解教程
phpMyAdmin 安装教程全攻略
PHP入门速成教程
php之字符串变相相减的代码
php中的实现trim函数代码
IIS6的PHP最佳配置方法
简单介绍下 PHP5 中引入的 MYSQLI的用途
php分页示例代码
生成静态页面的php函数,php爱好者站推荐
隐藏你的.php文件的实现方法
推荐一篇入门级的Class文章
PHP配置文件中最常用四个ini函数

PHP 中的 DISCUZ架构:积分系统代码分析一


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 270 ::
收藏到网摘: n/a

1.登陆积分显示
首先是登陆,登陆的时候论坛从cdb_members中取出一些发帖数,积分,扩展积分等等设置,在./include/common.inc.php中有如下代码:

以下为引用的内容:
$membertablefields = 'm.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
        m.adminid, m.groupid, m.groupexpiry, m.extgroupids, m.email, m.timeoffset, m.tpp, m.ppp, m.posts, m.digestposts,
        m.oltime, m.pageviews, m.credits, m.extcredits1, m.extcredits2, m.extcredits3, m.extcredits4, m.extcredits5,
        m.extcredits6, m.extcredits7, m.extcredits8, m.timeformat, m.dateformat, m.pmsound, m.sigstatus, m.invisible,
        m.lastvisit, m.lastactivity, m.lastpost, m.newpm, m.accessmasks, m.xspacestatus, m.editormode, m.customshow';

以上就是取出数据库中的会员用到的字段。

发帖,回复,发附件,下附件等的积分增加或减少

2.发帖,回复积分增减

(1)原理分析:

以下为引用的内容:
是这样一个过程,发帖的时候前台看到的文件是:post.php,
然后引用如下文件:
include/common.inc.php  DZ通用函数库
include/post.func.php  发帖用到的函数库
include/discuzcode.func.php  解析Discuz Code用到的

接下来跟据传入的action判断引用到哪个文件继续处理

以下为引用的内容:
include/newthread.inc.php(新帖)
include/newreply.inc.php(回复)
include/supesite_import.inc.php(导入到supersite)

(2)代码分析:

下面就以发新帖来分析一下Discuz对于积分的处理。

第一部分:post.php

以下为引用的内容:
这个文件是发新帖,回复,投票都会用到的,所以它的作用就是初始化一些全局的东西,我就不全文件分析了,只分析一些与积分有关的部分。

$postcredits = $forum['postcredits'] ? $forum['postcredits'] : $creditspolicy['post'];
$replycredits = $forum['replycredits'] ? $forum['replycredits'] : $creditspolicy['reply'];
$digestcredits = $forum['digestcredits'] ? $forum['digestcredits'] : $creditspolicy['digest'];
$postattachcredits = $forum['postattachcredits'] ? $forum['postattachcredits'] : $creditspolicy['postattach'];

这一部分的作用就是取出当前论坛的一些积分设置,和我们前面分析的数据表cdb_forumfields对应,得到会员发帖,回复等加多少分。