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

PHP
php 远程图片保存到本地的函数类
php 破解防盗链图片函数
快速开发一个PHP扩展图文教程
PHP6 mysql连接方式说明
php 进度条实现代码
php discuz 主题表和回帖表的设计
php 无限级缓存的类的扩展
php adodb操作mysql数据库
php FPDF类库应用实现代码
sourcesafe管理phpproj文件的补充说明(downmoon)
AspNetAjaxPager,Asp.Net通用无刷新Ajax分页控件,支持多样式多数据绑定
php一句话cmdshell新型 (非一句话木马)
php 木马的分析(加密破解)
PHP 数组入门教程小结
php 方便水印和缩略图的图形类
PHP加速 eAccelerator配置和使用指南
PHP 组件化编程技巧
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
两个强悍的php 图像处理类1
PHP 数据库 常见问题小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 170 ::
收藏到网摘: 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对应,得到会员发帖,回复等加多少分。