您现在的位置是:首页 > cms教程 > discuz教程discuz教程
项目整合Discuz论坛的实现方法
恨松2025-06-28 18:29:43discuz教程已有2人查阅
导读市场就是力量,discuz是国内人气较高,使用最广泛的论坛系统,发展到今天它已经整合了论坛、门户、博客、CMS等版块,内容丰富,深受用户的喜爱
市场就是力量,discuz是国内人气较高,使用最广泛的论坛系统,发展到今天它已经整合了论坛、门户、博客、CMS等版块,内容丰富,深受用户的喜爱,一直以来很多用户用它来整合自己的应用。由于discuz版块众多,系统相对封装,源代码缺少注释,api资料不够丰富,官方对discuz用户的咨询也并非卖力,而网上资料不是版本陈旧就是鱼龙混杂。对于想整合discuz论坛的朋友存在一定的难度。因此,如果你想美好整合discuz的话,不妨耐心看完以下提示。
一、准备工作
1、uc api说明书,通读全文。参考 (官方),了解同步登陆机制
2、uc 后台添加应用说明。
3、uc client客户端必要代码,这里下载
4、如果是x3后面的版本,请先更改bug
解决方案如下:
\source\class\discuz的discuz_application.php 查找 二、示例
我们学习一门技术时,看看它的技术说明就足够了,但discuz远非如此。discuz不是zend frame、dedecms、ci这些白开水的东西,没有一点钻研精神和爱折腾的气质是无法理解它深奥的内涵,更不用说驾驭它。要达到成功,我们需要有详尽的说明文字,另外还需要配备必要的图片,虽然有了这些你也未必能够成功。
先看一下我的项目结构
tanahk 是真正的项目地址,x3.2是我的discuz论坛,打开它
可以看到这个discuz x3.2已经整合了Ucenter,其中uc_server是uc服务器,uc_client是客户端,uc_client这个文件夹在discuz x、discuz home、discuz xspace等产品中都是已经捆绑好的。需要记住的一点,在整个共用站点系统中,我们只需要一个uc_client,因为uc_server只会在它定义的uc_client路径中寻找data文件中的apps数组。
因此在多站点同步登陆登出的关键文件只有两个,一个是config.ini.php,另一个是uc.php。前者告诉uc_server我们这个应用的配置,后者供uc_server调用。
把examples/api/uc.php文件复制到我们的tanahk/api/uc.php,examples/config.inc.php和examples/include也添加进来。目录结构变为
code文件夹我用来查看一些源码。
好了,现在可以在UCenter后台添加我们的项目应用了。uc的后台一般为http:// .xxx.com/x3.2/uc_server/admin.php
选择“应用管理”--“添加新应用”
参考上面准备工作中2。
应用类型:其它
应用名称:Tanahk,这里只能填写英文
通信密钥:随意一串不多于64位的字母数字。
应用的物理路径:可以为空,只要应用主url填写正确
应用接口文件名称:保留,uc.php,不用填api/uc.php
是否开启同步登陆:是,这是关键,以后多个项目共用一个uc就行了,不用自己新建一套用户系统。
提交。
提交后一般是通信错误的。
我们先修改tanahk/api/config.inc.php 。这里的数据非常重要,如果安装了discuz x或其它discuz产品,较好对照discuz root/config下面的配置文件修改。 认真对照,特别是UC_KEY与UC_APPID,id一般为2以后的数字,查看uc后台,1被discuz x霸占了。 上面的配置不能遗漏。 UC_DBHOST,如果填写mysql,较好带port,可以包括端口号,例如 “hostname:port”,或者到本地套接字的路径,例如对于 localhost 的 “:/path/to/socket”。UC_PPP:默认值为 20,与 UCenter 日志显示的条数和通知管理显示的条数有关系。
在上述配置之后加上一句 : 它用来贮存用户登陆成功后的cookie值。
我们现在需要花大力气修改uc.php。首先是修改开头的常量定义 然后是修改下面的note通知方式。 上面把我们的$cookiename参数引进来,留给同步登陆函数使用。 修改function uc_note,它其实就是uc_note类的的构造函数。当ucenter有相关举动时通知我们的应用。 把uc_client客户端指向discuz X3.2的路径,而配置文件指向我们api/目录。
然后修改synlogin/synlogout同步论坛的登入登出函数,把我们的$cookiename引进来 如上。当用户在论坛中登陆时,它会通知更新我们设定的名为$cookiename的cookie值,而当用户在其它地方退出时,会清除我们的cookie。
因为_setcookie函数要引用全局变量,discuz在uc.php默认把它屏蔽了,因此我们要加进来。 discuz在uc.php后面定义了三个函数,一个_setcookie,它贮存cookie,_authcode加密解密用户cookie或其它文本值,_stripslashes转义字符串。
_authcode是一个使用频率很高,用途广泛的明文加解密函数,在discuz产品或其它php产品中非常常见,我们有必要了解一下。下面是以其原版authcode为例 如果配置全部正确,再回到uc后台,点击“应用管理”,应该能显示通信成功了。
到这步预防万一,我们再次点击应用2的编辑,进入,复制最下面的“应用的 UCenter 配置信息”,再次对照config.ini.php。这样写法更规范。
至此,所有配置都结束。
现在再来分析一下。discuz root/uc_client/client.php是我们第三方网站操纵discuz ucenter的入口,里面定义了很多全局api函数,通过这些函数我们可以实现用户的登陆、退出、获取用户信息等等功能。具体查看官方接口函数这一章节。而tanahk/api/uc.php文件则相反,它是ucenter与我们的网站交互的接口,ucenter的相关动作可以通知到我们的应用。比如用户在论坛的登陆、退出、修改用户密码、修改昵称等。那么它是怎样通知uc.php呢,打开discuz root/uc_server/control/user.php,查看30-52行。 这个是同步登陆函数,注意 是判断我们后台添加的discuz x、discuz home....甚至是我们的第三方应用是否开启了同步登陆。如果在uc后台编辑了“是”那么会在discuz root/uc_server/data/cache/apps.php,及在discuz root/uc_client/data/cache/apps.php下面分别贮存数据。 如果在对应数组设置了’synlogin’=>1,那么它就是同步,它是在后台点击“应用管理”的时候自动添加进来的。但如果我们前面的设置有错,没有看到上面的$_CACHE['apps'][2],那么,我们只能照上面的1,复制一份下来。不然在onsynlogin() 函数 循环时没有找到我们的应用,它就不会发送js通知。
对于使用mvc的应用来说,我们可能还需要把client.php的功能集成到我们的model层,规范我们的行为。以我自己的TinyMVC为例,model层完全是我们自己实现的。 这样,当在controller使用$this->model->uc_user_login()时,实际上是调用uc api的uc_user_login函数,比如上面代码之后的$this->authcode()方法就是调用uc_client/client.php里面的同名函数,使用方法参考官方api。至此,我们就可以随心所欲地在control里面读取ucenter里面的数据。
一、准备工作
1、uc api说明书,通读全文。参考 (官方),了解同步登陆机制
2、uc 后台添加应用说明。
3、uc client客户端必要代码,这里下载
4、如果是x3后面的版本,请先更改bug
解决方案如下:
\source\class\discuz的discuz_application.php 查找 二、示例
我们学习一门技术时,看看它的技术说明就足够了,但discuz远非如此。discuz不是zend frame、dedecms、ci这些白开水的东西,没有一点钻研精神和爱折腾的气质是无法理解它深奥的内涵,更不用说驾驭它。要达到成功,我们需要有详尽的说明文字,另外还需要配备必要的图片,虽然有了这些你也未必能够成功。
先看一下我的项目结构
tanahk 是真正的项目地址,x3.2是我的discuz论坛,打开它
可以看到这个discuz x3.2已经整合了Ucenter,其中uc_server是uc服务器,uc_client是客户端,uc_client这个文件夹在discuz x、discuz home、discuz xspace等产品中都是已经捆绑好的。需要记住的一点,在整个共用站点系统中,我们只需要一个uc_client,因为uc_server只会在它定义的uc_client路径中寻找data文件中的apps数组。
因此在多站点同步登陆登出的关键文件只有两个,一个是config.ini.php,另一个是uc.php。前者告诉uc_server我们这个应用的配置,后者供uc_server调用。
把examples/api/uc.php文件复制到我们的tanahk/api/uc.php,examples/config.inc.php和examples/include也添加进来。目录结构变为
code文件夹我用来查看一些源码。
好了,现在可以在UCenter后台添加我们的项目应用了。uc的后台一般为http:// .xxx.com/x3.2/uc_server/admin.php
选择“应用管理”--“添加新应用”
参考上面准备工作中2。
应用类型:其它
应用名称:Tanahk,这里只能填写英文
通信密钥:随意一串不多于64位的字母数字。
应用的物理路径:可以为空,只要应用主url填写正确
应用接口文件名称:保留,uc.php,不用填api/uc.php
是否开启同步登陆:是,这是关键,以后多个项目共用一个uc就行了,不用自己新建一套用户系统。
提交。
提交后一般是通信错误的。
我们先修改tanahk/api/config.inc.php 。这里的数据非常重要,如果安装了discuz x或其它discuz产品,较好对照discuz root/config下面的配置文件修改。 认真对照,特别是UC_KEY与UC_APPID,id一般为2以后的数字,查看uc后台,1被discuz x霸占了。 上面的配置不能遗漏。 UC_DBHOST,如果填写mysql,较好带port,可以包括端口号,例如 “hostname:port”,或者到本地套接字的路径,例如对于 localhost 的 “:/path/to/socket”。UC_PPP:默认值为 20,与 UCenter 日志显示的条数和通知管理显示的条数有关系。
在上述配置之后加上一句 : 它用来贮存用户登陆成功后的cookie值。
我们现在需要花大力气修改uc.php。首先是修改开头的常量定义 然后是修改下面的note通知方式。 上面把我们的$cookiename参数引进来,留给同步登陆函数使用。 修改function uc_note,它其实就是uc_note类的的构造函数。当ucenter有相关举动时通知我们的应用。 把uc_client客户端指向discuz X3.2的路径,而配置文件指向我们api/目录。
然后修改synlogin/synlogout同步论坛的登入登出函数,把我们的$cookiename引进来 如上。当用户在论坛中登陆时,它会通知更新我们设定的名为$cookiename的cookie值,而当用户在其它地方退出时,会清除我们的cookie。
因为_setcookie函数要引用全局变量,discuz在uc.php默认把它屏蔽了,因此我们要加进来。 discuz在uc.php后面定义了三个函数,一个_setcookie,它贮存cookie,_authcode加密解密用户cookie或其它文本值,_stripslashes转义字符串。
_authcode是一个使用频率很高,用途广泛的明文加解密函数,在discuz产品或其它php产品中非常常见,我们有必要了解一下。下面是以其原版authcode为例 如果配置全部正确,再回到uc后台,点击“应用管理”,应该能显示通信成功了。
到这步预防万一,我们再次点击应用2的编辑,进入,复制最下面的“应用的 UCenter 配置信息”,再次对照config.ini.php。这样写法更规范。
至此,所有配置都结束。
现在再来分析一下。discuz root/uc_client/client.php是我们第三方网站操纵discuz ucenter的入口,里面定义了很多全局api函数,通过这些函数我们可以实现用户的登陆、退出、获取用户信息等等功能。具体查看官方接口函数这一章节。而tanahk/api/uc.php文件则相反,它是ucenter与我们的网站交互的接口,ucenter的相关动作可以通知到我们的应用。比如用户在论坛的登陆、退出、修改用户密码、修改昵称等。那么它是怎样通知uc.php呢,打开discuz root/uc_server/control/user.php,查看30-52行。 这个是同步登陆函数,注意 是判断我们后台添加的discuz x、discuz home....甚至是我们的第三方应用是否开启了同步登陆。如果在uc后台编辑了“是”那么会在discuz root/uc_server/data/cache/apps.php,及在discuz root/uc_client/data/cache/apps.php下面分别贮存数据。 如果在对应数组设置了’synlogin’=>1,那么它就是同步,它是在后台点击“应用管理”的时候自动添加进来的。但如果我们前面的设置有错,没有看到上面的$_CACHE['apps'][2],那么,我们只能照上面的1,复制一份下来。不然在onsynlogin() 函数 循环时没有找到我们的应用,它就不会发送js通知。
对于使用mvc的应用来说,我们可能还需要把client.php的功能集成到我们的model层,规范我们的行为。以我自己的TinyMVC为例,model层完全是我们自己实现的。 这样,当在controller使用$this->model->uc_user_login()时,实际上是调用uc api的uc_user_login函数,比如上面代码之后的$this->authcode()方法就是调用uc_client/client.php里面的同名函数,使用方法参考官方api。至此,我们就可以随心所欲地在control里面读取ucenter里面的数据。
本文标签:
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
discuz怎么安装,discuz安装步骤教程
Discuz安装指南:准备LAMP环境、域名、FTP客户端。上传Discuz文件到网站根目录。创建数据库并配置config.php文件。运行安装程序,填写基本信息和管理员账户。Discuz论坛搜索功能使用方法
Discuz论坛是一个基于PHP的开源社区软件,支持用户发帖、回帖、私信等功能。搜索功能是其中的一个重要模块,允许用户通过关键词、作者、时间等条件来查找帖子。Discuz的nt模板机制
作为产品中的一大特色,模板机制一经推出,就引来了大家特别是站长们的关注。但它所饱受的风风雨雨也成了那时不少人关注的话题。而今天本人将结合在产品组中的开发经历Discuz安装过程中数据库连接失败的原因及解决方法
数据库连接失败通常是因为配置错误、数据库服务器不可用或权限问题导致的。了解PHP和MySQL的基础知识,如如何配置数据库连接、常见的错误代码及其含义,将有助于你更快地解决问题。
留言与评论 (共有 0 条评论) |