Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4177040
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: Python/Ruby

2011-01-08 13:13:49

moodle有个外部数据库认证,但是由于ucenter使用了二次md5,所以不能直接使用,
一:修改
     \moodle\auth\db\auth.php,大约90行左右,改为:

点击(此处)折叠或打开

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

二:编码:
  如果外部数据库的编码是gbk,或者是编码出错,需要在本行前加一行: 

点击(此处)折叠或打开

  1. $authdb->Execute("set names gbk");

三:禁用回写:
   默认情况下,如果用户修改了信息,比如邮箱,Moodle会把该信息写回到外部数据库中,这项功能在某些情况下会很危险,甚至会破坏掉原数据库的用户信息。
   /user/edit.php,第200行左右,禁用掉下面的部分:

点击(此处)折叠或打开

  1. // pass a true $userold here
  2.     if (! $authplugin->user_update($user, $usernew)) {
  3.         // auth update failed, rollback for moodle
  4.         $DB->update_record('user', $user);
  5.         print_error('cannotupdateprofile');
  6.     }
  如果(1)外部编码是GBK;(2)确认要回写信息到外部数据库,那么必须在auth.php中的 520行左右

点击(此处)折叠或打开

  1. $authdb = $this->db_init();
后面加一行:

点击(此处)折叠或打开

  1. $authdb->Execute("set NAMES gbk");





-----待续---------



阅读(8698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~