当discuz6.0刚刚发布的时候,我们就建立了论坛,同时安装了x-space4.0
在x-space的配置文件 config.php的最后,我们指明了:
// 用户中心模式(0:没有用户中心 1:有用户中心) $ucmode = 0;
这样,BBS的用户在登录xspace的时候,会调用batch.login.php中如下的代码(从第30行开始):
switch ($action) {
case 'login':
include_once(S_ROOT.'./include/common.inc.php');
$cookietime = 0;
if(!empty($_POST['cookietime'])) $cookietime = intval($_POST['cookietime']);
if (submitcheck('loginsubmit')) {
$password = $_POST['password'];
$username = $_POST['username']; dbconnect(1);
if(empty($_SCONFIG['ucmode'])) {
$password = md5($password);
$query = $_SGLOBAL['db_bbs']->query('SELECT * FROM '.tname('members', 1).' WHERE us
ername=\''.$username.'\' AND password=\''.$password.'\'');
//$s = 'SELECT * FROM '.tname('members', 1).' WHERE username=\''.$username.'\' AND pa
ssword=\''.$password.'\'';
} else {
从sql语句中我们可以看到,X-Space4.0把用户登录时候输入的密码做了md5操作之后,就拿去和discuz数据库中保存的加密后的密码做比较了。你没看错,xspace确实是去读取的discuz的数据表(默认为cdb_members表)。
由此也可见,discuz6.0中,用户密码的保存形式就是明文密码的md5值。
升级到discuz7.0之后,论坛的老用户们的密码仍然是以这种形式保存的,但是新的注册用户的密码不再以md5(‘明文密码’)的形式保存了(加了一个salt)。
所以,老用户们的登录不受影响,但是升级之后的新注册用户,都无法登录xspace了。
最简单的解决方法当然是discuz和xspace都与ucenter通信了。
操作如下:
修改X-Space主机根目录下的config.php, 把$ucmode 从0改为1 。
进入ucenter的管理后台,应用管理,添加新应用:
应用名称随便写
应用的URL为xspace的首页地址。以http://开头,结尾不要加/ 不需要写后面的index.php index.html之类的东西。举例: http://www.masalife.com
应用IP可以不填
通信密钥随便写一个超级复杂的就可以了
应用类型的下拉框里面选择X-Space
以下都保持默认
是否开启同步登录:选择是
是否接受通知:选择是
然后提交
这时会自动返回到应用列表。如果你在列表中看到xspace的应用的通信状态是“通信成功”,那么恭喜你,你成功了。
如果显示“通信失败”,那么就编辑它,首先检查有没有书写上的错误。如果没错的话,把页面拉到最下面,可以看到
“应用的UCenter配置信息”,复制里面的PHP语句,粘贴到xspace根目录的config.php里面。
这下应该真的成功了。
如果还是通信失败的话,编辑这个应用,设置一下“应用IP” 为XSpace所在服务器的IP即可。