moodle如何整合discuz

moodle如何整合discuz

zhi jue發表於
Number of replies: 12

我网站论坛使用discuz,相信很多人也和我一样。

怎样整合moodle和discuz呢。会员数据同步

感兴趣的朋友,可以联系我QQ56904646(验证注明moodle整合discuz)一起探讨吧

評比平均分數: -
In reply to zhi jue

回复: moodle如何整合discuz

uw i發表於

我也考虑过,想把他们做成单点登陆的,不过一是水平有限;二是没有时间;所以一直没有动手做。

我还曾想过,把帐号和serv-u的帐号集成在一起管理,也没动手去做它。

不知道有人做过没。

In reply to uw i

回复: moodle如何整合discuz

Ling Li發表於
用 LDAP 吧,会简单很多。当然 sso 还需要额外的东西,譬如 耶鲁的 CAS。
In reply to Ling Li

回复: moodle如何整合discuz

rongguang liu發表於

李老师:

      您好!我想就主贴请教您。我现在也是想将学校论坛和Moodle用户信息数据库整合到一起,但不知道如何进行,希望得到您的帮助指导,谢谢!

      注:校园网论坛是基于ASP.net(C#语言编写),使用的数据库是Sql server,moodle使用的是mysql数据库,两个系统在用户信息数据库上有共同的地方,用户名、密码、邮箱。

In reply to zhi jue

Re: moodle如何整合discuz

Wei Tang發表於
你到Moodle管理界面里看看,
Moodle可以配置成使用外部数据库(DiscuZ数据库)来验证用户?

如果仅仅是想登录,理论上这样就好了。

BTW:没试过,能成功地话请留言告诉大家。
In reply to zhi jue

回复: moodle如何整合discuz

雨 肖發表於
moodle里----用户-----身份验证----使用一个外部数据库,点击设置,设置外部discuz的数据库所在的服务器,或者本地的mysql数据库,但是你要知道discuz所在数据库中用户的表单的名字,我已经试验成功过了。
In reply to 雨 肖

回复: moodle如何整合discuz

木 乔發表於
这么简单啊?

那和很多程序——不仅仅是discuz论坛——都可以很容易地整合了?
In reply to 雨 肖

回复: moodle如何整合discuz

木 乔發表於
我安装了一个最新版(1.9)的moodle,安装后指定外部discuz的数据库做认证。但是输入discuz论坛的用户名和密码,提示

无法连接到制定的认证数据库...

关于这个错误的更多信息



请问问题可能出在哪里?

数据库的权限已经设置好了。
In reply to 木 乔

回复: moodle如何整合discuz

pusey zhang發表於
我外部数据库都设置好了,为什么总是提示登陆无效呢,不管我输的是不是DZ的用户名和密码都提示我登陆无效,我的DZ和moodle在同一个数据库里。连无法连接到制定的认证数据库的提示都没出现过。 我的论坛地址http://www.bookpop.com.cn/bbs, moodle地址http://www.bookpop.com.cn/moodle 同一个空间,同一个数据库
In reply to 雨 肖

回复: moodle如何整合discuz

86 zhong發表於
我已经设好了,但每次在moodle登陆的时候都显示“登录无效,请重试”,是什么原因啊?我自己都搞不懂,不知道下面这些是怎么设置的,是不是每一项都要填写呢?

使用一个外部数据库

该方法使用一个外部数据库来检验用户名和密码是否有效。如果是一个新帐号,该帐号其它字段的信息将一起复制到本系统中。

主机 数据库所在的主机。
数据库 MySQL 数据库类型(详情请看ADOdb帮助文档
使用sybase引用 Sybase风格,需要Oracle支持,MS SQL和一些其他的数据库,不要使用MySQL!
数据库名 discuz 数据库名
数据库所有者 对该数据库具有读权限的用户名
密码 与上面的用户名匹配的密码
数据表 cdb_members 数据库中的表单名
用户名字段 username 含有用户名的字段名
密码字段 password 含有密码的字段名
密码格式 MD5加密  指定密码字段所用的格式。MD5编码可用于与其它通用WEB应用如PostNuke相联接
外部数据库编码方式 gbk 外部数据库使用的编码方式
SQL设置命令 特定数据库设置SQL命令。过去常设置通信编码方式,例如MySQL和PostgreSQL:SET NAMES 'utf8'
调试ADOdb 调试ADOdb连接到外部数据库,登录时显示空页面。不符合站点要求。
更改密码URL 在这里您可以指定一个位置用户可以重新获得或更改他们的用户名/密码。这将在登录页面显示一个按钮。如果留空不填,就不会有按钮出现。

Cron同步脚本

移除用户 完全删除 指定在用户帐号在外部被删除时,内部用户帐号在同步的时候允许做什么。只有延迟用户帐号在外部数据中出现时才会被自动激活。

数据映射

更新本地数据  创建时 每次登录时
更新外部数据  从不 更新时
锁定值  已解除锁定 如果空则解除锁定 已锁定
这些字段是可选的。您在此指定的外部数据库字段将预先填入本系统的用户数据库中。

如果您留空不填,将使用系统默认值。

无论以上哪种情况,用户在登录后都可以改写这些字段。

更新本地数据  创建时 每次登录时
更新外部数据  从不 更新时
锁定值  已解除锁定 如果空则解除锁定 已锁定
E-mail地址
更新本地数据  创建时 每次登录时
更新外部数据  从不 更新时
锁定值  已解除锁定 如果空则解除锁定 已锁定
市/县
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
国家和地区
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
语言
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
描述
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
网页
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
ID号码
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
机构
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
系别
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
电话 1
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
电话 2
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 
地址
更新本地数据  每次登录时
更新外部数据  更新时
锁定值  已解除锁定 

In reply to 86 zhong

回复: moodle如何整合discuz

Share Yang發表於

无法登陆的原因可能是discuz的加密方式不仅仅是单一的MD5(),据网上的资料显示,discuz 6.1的密码=md5(md5(明文密码).随机码) 。其中‘随机码’是存储在uc_members表中的“salt”字段。

要解决这一问题,我的方法是修改moodle\auth\db目录下的auth.php文件。

将92行左右的下列代码:

           $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
                                WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'
                                 AND {$this->config->fieldpass} = '".$this->ext_addslashes($extpassword)."' ");

改成:

            $rs = $authdb->Execute("SELECT * FROM {$this->config->table}
                                WHERE {$this->config->fielduser} = '".$this->ext_addslashes($extusername)."'
                                  AND {$this->config->fieldpass} = md5(concat('".$this->ext_addslashes($extpassword)."',salt)) ");

这样改实际是一种偷懒的改法,不过这种方法是有效的。在设置“密码格式”里选“md5”。理想的改法是在“密码格式”里增加一种格式如“discuz
”,然后再在auth.php中加入相应的代码。