Discuz X2版本在本地以及远程整合Yii账号互通登录成功及要点 [ 新手入门 ]
但是,在主机上测试还出现
Yii登录或者退出时提示:can't find the page:
/mj/bbs/uc_server/index.php?__times__=1(port80)
错误,无法同步,不知道为什么
出现错误后逐步发现原因解决了
共 8 条回复
-
已经通过上传upload全新安装解决了这个问题的一部分(似乎在本地测试成功的文件不能直接上传使用):
Yii登录或者退出时不再报告提示:can't find the page:
/mj/bbs/uc_server/index.php?__times__=1(port80)
可以单向同步,通信成功,yii登录或者退出都可以让discuz同步,但是反之不能,
说明discuz接受消息是成功的,但是发送消息没有让yii收到,是什么原因呢?
是否是因为远程linux主机的文件权限设置与本地windows文件权限不一样?但是设置了很多文件的权限后仍然没有成功,舰长给个意见呢 -
根据舰长给出的工作原理:
- 用户登录bbs,通过logging.php这个文件中,使用函数uc_user_login验证,
如果验证成功,将调用函数uc_user_synlogin(位于uc_client下的client.php文件),
在这个函数中调用uc_api_post('user', 'synlogin', array('uid'=>$uid));
之后向UC_API.'/index.php'传递了数据;
这里的UC_API就是在config.inc.php中的定义的uc_server的URL地址 - uc_server的index.php接受参数数据,获得model为user,action为synlogin,
然后调用control目录下的user.php类中的onsynlogin方法,通过foreach循环,
以javascript的方式通知uc应用列表中的应用同步登录;
即通过get方式传递给应用目录中api下的uc.php一些数据;-------》此处是关键,linux主机上必须把此文件夹的属性设置为可执行。 - uc.php接收通知并处理get过来的数据,
并在函数synlogin(位于uc.php中)通过函数_authcode加密数据(默认以UC_KEY作为密钥),
用函数_setcookie设置cookie; - 各个应用在适当的文件中用对应的密钥解码上面设置的cookie,
得到用户id等数据;通过这个值来判断用户是否经过其它应用登录过
,发现原因了,原来是linux 主机 的应用目录中api下的uc.php无执行权限;
设置可执行权限后完整通过yii应用和discuzX2互联---到此打完收工
- 用户登录bbs,通过logging.php这个文件中,使用函数uc_user_login验证,
-
zhong21jia 回复于 2012-03-26 23:23 举报
学习之!
sys2009 neijiang
注册时间:2011-12-12
最后登录:2014-01-26
在线时长:0小时10分
最后登录:2014-01-26
在线时长:0小时10分
- 粉丝0
- 金钱120
- 威望0
- 积分120