sys2009 2011-12-16 16:21:32 5268次浏览 8条回复 0 0 0

但是,在主机上测试还出现 Yii登录或者退出时提示:can't find the page: /mj/bbs/uc_server/index.php?__times__=1(port80) 错误,无法同步,不知道为什么 出现错误后逐步发现原因解决了

  • 回复于 2011-12-17 14:38 举报

    已经通过上传upload全新安装解决了这个问题的一部分(似乎在本地测试成功的文件不能直接上传使用):
    Yii登录或者退出时不再报告提示:can't find the page:
    /mj/bbs/uc_server/index.php?__times__=1(port80)
    可以单向同步,通信成功,yii登录或者退出都可以让discuz同步,但是反之不能,
    说明discuz接受消息是成功的,但是发送消息没有让yii收到,是什么原因呢?
    是否是因为远程linux主机的文件权限设置与本地windows文件权限不一样?但是设置了很多文件的权限后仍然没有成功,舰长给个意见呢

  • 回复于 2011-12-17 14:42 举报

    另外,在通信成功前,discuz能够完整显示退出的提示消息,可是通信一旦成功,discuz就再也不能显示完整的退出消息提示:并提示 404错误,找不到文件

  • 回复于 2011-12-17 17:52 举报

    根据舰长给出的工作原理:

    • 用户登录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互联---到此打完收工

  • 回复于 2011-12-17 18:57 举报

    接上,发现新问题,在设置QQ快速登录并且更改为第一次登录强制设置密码注册后,又发生无法双向互联现象,正在考察原因

  • 回复于 2011-12-17 19:24 举报

    楼主写的真详细,赞一个!

  • 回复于 2012-02-12 09:02 举报

    我也在做这个整合,发现同样问题,YII可以同步到discuz,但反之不可以……。

  • 回复于 2012-03-26 23:23 举报

    学习之!

  • 回复于 2012-05-25 17:41 举报

    研究中,通信总是失败。。。。

您需要登录后才可以回复。登录 | 立即注册