+ -
当前位置:首页 → 问答吧 → Discuz! 网络论坛程式的文件结构和运行机制

Discuz! 网络论坛程式的文件结构和运行机制

时间:2009-01-02

来源:互联网

本帖最后由 kscript 于 2009-5-15 10:23 编辑

近几年来,Discuz! 网络论坛软件成为中文语系地区使用最广泛的论坛系统。


本贴对 Discuz! 的程序和执行进行简要分析,供所有 对 Discuz! 感兴趣的朋友分享,

也 欢迎 各位朋友 提出 自己的 观点和意见。


关键的程序文件

软件中有个 20/80 规律,即 80% 的软件功能集中在 20% 的程序中。

这套在 Discuz! 上再适合不过了,它的大部分功能就集中在 小部分的 文件 中。

Discuz! 中的关键的程序文件包括:

  • Discuz! 根目录下的 .php 文件,在这 40 多个文件中,只有十来个是常用的(详见后面的文件列表)。
  • Include 文件夹中的文件,可以说这些是整个 系统的核心,其中又以 common.inc.php 最为关重。
  • templates\default 文件夹中的文件(使用默认模板),包括模板文件和语言包文件,它们构成论坛的前台。


如果是 管理员 登陆的话,则还要涉及  admin 等文件夹。


程序运行机制简述

用户登陆 论坛 时 主要 与 Discuz! 根目录下的 .php 文件 进行交互操作,

几乎所有这些文件 的开头 都用   require_once './include/common.inc.php';     导入初始化模块程序

而这些文件中 又都用   include template('模板文件名');   比如 search.php中的   include template('search');  解析模板

当用户操作论坛界面时,这些文件 先导入  common.inc.php  进行初始化,并执行该文件定义的功能,
然后 用 global.func.php  中定义的   template  函数 进行模板解析(或使用模板缓存),展示新的界面。


主要程序文件列表

网上关于 Discuz! 文件列表的介绍很多,但 我 觉得 列出 关键和常用的文件更有利分析。

文件太多,未能罗列,各位朋友如果有更好的 列表方式,也可以 发贴上来 大家讨论 哦。

Discuz! 根目录下的文件

config.inc.php                  配置论坛数据库、密码等信息
index.php                        控制首页元素显示
logging.php                     登陆系统,判断用户名、密码。
register.php                    注册文件,同时也会控制注册的信息的合法性
post.php                         管理帖子发表、编辑等等信息,也会有权限的控制提示
viewthread.php               处理浏览帖子时候的帖子信息显示,例如信息、标题等等
search.php                     处理论坛搜索功能
forumdisplay.php            论坛主题列表的显示
digest.php                      论坛精华区的信息显示
memcp.php                    会员控制面板
space.php                      用户资料显示
member.php                  控制会员列表显示
pm.php                          论坛短信息程序
admincp.php                  管理员系统设置程序文件

以上是根目录下常用的文件,此外还有:

attachment.php             附件文件
announcement.php       论坛公告的显示
blog.php                        浏览BLOG文章
discuz_version.php       论坛版本信息
faq.php                         论坛帮助系统
misc.php                       控制评分功能、BLOG、论坛界面显示等功能
plugin.php                    论坛插件,控制论坛插件的菜单的显示
redirect.php                  控制显示论坛的最后发表的主题访问
rss.php                         RSS快速订阅
seccode.php                论坛注册,生成验证码的程序
stats.php                      处理统计中的统计信息
topic.php                     控制页面显示,显示主题条数
topicadmin.php            管理人员的前台管理操作,如精华、置顶、高亮等等
viewpro.php                 处理浏览会员信息的内容显示
magic.php                    处理道具商店的内容显示


Include 文件夹

common.inc.php           最重要的核心程序,读取COOKIES信息,定义全局系统函数变量(网上有分析该文件的贴子)
global.func.php            丰富的函数库,如除去HTML、发PM、发EMAIL等等
db_mysql.class.php     数据库中心操作程序
template.func.php       调用模板、控制模板缓存生成的文件
misc.func.php              控制管理PM,评分PM,评分记录,附件高亮显示,IP转换为地理位置
forum.func.php            处理论坛信息用的函数,如论坛菜单下拉等等
cache.func.php            控制生成缓存文件的程序

post.func.php               主要是记录信息、更新帖子的函数
editpost.inc.php            编辑帖子的信息处理
pmprompt.inc.php         短信息内容处理
newthread.inc.php        发新话题的信息处理
newreply.inc.php           发回复的信息处理
security.inc.php             安全性检查

以上都是Include 文件夹中较重要的,另外还有

sendmail.inc.php           发送EMAIL的程序
relatethreads.inc.php    生成相关主题的程序
promotion.inc.php         记录当前用户的IP等信息
printable.inc.php            打印主题用的程序
discuzcode.func.php      Discuz!代码转换处理程序
db_mysql_error.inc.php  数据库错误汇报
cron.func.php                 控制计划任务执行的程序
counter.inc.php               记录操作系统与浏览器的统计
chinese.class.php           处理乱码和字符集用
category.inc.php             控制帖数,今日发帖数的统计
blog.func.php                  BLOG发帖时的信息处理
attachment.func.php       识别附件拓展名,控制附件前面显示类别图片的程序, 还有附件大小的记录判断
advertisements.inc.php    处理广告显示
serverbusy.htm                 系统错误信息

Include 文件夹中还有子文件夹:

    crons 子文件夹             计划任务文件
    tables 子文件夹             GB码 Big5码语言文件
    magic 子文件夹             道具商店文件
    javascript子文件夹        系统用的javascript文件,其中 common.js 和 bbcode.js 较重要

作者: kscript   发布时间: 2009-01-02

期待楼主拆Dz7

作者: yafeikf   发布时间: 2009-01-02

顶一个,楼主继续深入哈。把DZ拆了...

作者: z0800   发布时间: 2009-01-16

又一个分析的,希望可以有新的发现

作者: cnkiller   发布时间: 2009-01-16

楼主继续深入哈。把DZ拆了...

作者: analyzer   发布时间: 2009-02-05

没了?

作者: cnkiller   发布时间: 2009-02-05

DZ7 !

作者: E蜗牛   发布时间: 2009-02-06

我正需要啊!!!

作者: lilyef2000   发布时间: 2009-03-21

喜欢你的

作者: xinxing520   发布时间: 2009-03-22

继续吧  我观望

作者: 泪雪无恨   发布时间: 2009-03-23

观望中。。。。牛人~~

作者: JOJ_97   发布时间: 2009-03-23

很喜欢啊

作者: kwlong2008   发布时间: 2009-03-24

好像最常见得就是分析文件结构,数据库结构,和common.inc.php!  其他得都没人研究吗?

作者: gone   发布时间: 2009-03-24

好东西啊!

作者: 半个书生   发布时间: 2009-04-10

观望中

作者: strongability   发布时间: 2009-04-13

继续期待

作者: guosubei333   发布时间: 2009-04-16

嘿嘿,期待许久了

作者: z0800   发布时间: 2009-04-17

怎么没有  再继续了...

作者: 草名   发布时间: 2009-04-20

我期待

作者: smallhe   发布时间: 2009-04-23

期待

作者: smartfoxbaby   发布时间: 2009-04-26

LZ继续努力啊!!!

作者: e_zailai   发布时间: 2009-05-14

支持LZ

作者: Kevin-Lau   发布时间: 2009-11-18

喜欢这样的文章

作者: 落寞三少   发布时间: 2009-11-19

代码的力量出版过分析DZ源码的书籍.

作者: davinciywf   发布时间: 2009-11-19

没动静了。

作者: sxxy515   发布时间: 2009-11-21