我网站论坛使用discuz,相信很多人也和我一样。
怎样整合moodle和discuz呢。会员数据同步
感兴趣的朋友,可以联系我QQ56904646(验证注明moodle整合discuz)一起探讨吧
主机 | 数据库所在的主机。 | |
数据库 | 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 |
更新本地数据 每次登录时
更新外部数据 更新时 锁定值 已解除锁定 |
|
地址 |
更新本地数据 每次登录时
更新外部数据 更新时 锁定值 已解除锁定 |
无法登陆的原因可能是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中加入相应的代码。
我已经实现了这些功能了。
登陆Moodle之后,自动登陆其他的php系统。登陆其他php系统,自动登陆Moodle。
至于asp.net、java系统,实现原理也类似,只不过会麻烦点。
具体可以到我的Blog http://hi.baidu.com/heshaoyue/blog/item/6d4ab1b728b347fc31add186.html上查看。