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

PHP
PHP常用代码
小偷PHP+Html+缓存
PHP 常见郁闷问题答解
上传多个文件的PHP脚本
详解::如何将图片储存在数据库里
PHP生成静态页面详解
[PHP]模板引擎Smarty深入浅出介绍
PHP语法速查表
一些常用的php函数
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
PHP经典的给图片加水印程序
PHP 字符串操作入门教程
source.php查看源文件
main.php
Php部分常见问题总结
[PHP] 《PHP边学边教》(01.开篇:准备工作)
《PHP边学边教》(02.Apache+PHP环境配置:上篇)
《PHP边学边教》(02.Apache+PHP环境配置:下篇)
傻瓜化配置PHP环境:Appserv
《PHP边学边教》(04.编写简易的通讯录:视频教程1)

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


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