doohui 发表于 2014-8-21 15:44:10

CI整合discuz-顺带解决了通信失败原因-nginx版本


由于nginx的rewrite规则和apache不一样,造成了nginx下的一些规则不一样,一步步的来。
没权限发图,就先一步步写出来。

首先,基本的设置都已经做好了:内容如http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=17569,虽然给我的感觉是hex根本不知道什么是什么,回答的模棱两可。

首先,第一步,UC后台有个应用管理,这里其实是请求一个地址,如果返回为1则验证成功。

后台的请求地址如下:
GET /api/uc?time=1408605690&code=1672ubcWuY8b0pH8nuCx8NTfcrODPgMSF3xxxxixLHHC7u4zZGrCFDrTuiKJWKBQ5p9tiZ1AJ0T6vFg
假如CI的路径是:http://ci.doohui.com,那么Ucenter则会在后台请求如上的地址,结合起来就是:
http://ci.doohui.com/api/uc?time=1408605690&code=1672ubcWuY8b0pH8nuCx8NTfcrODPgMSF3xxxxixLHHC7u4zZGrCFDrTuiKJWKBQ5p9tiZ1AJ0T6vFg,如果返回是1,那么就是成功,如果不是,自己下断点。


如果这一步已经完成了,那么恭喜你,下面一步更简单:如何同步登录记录。
解决起来很简单:
找到uc_client/client.php 找到uc_user_synlogin()这个函数,然后在count($_CACHE['apps'])>1 修改成 count($_CACHE['apps'])>=1。


然后登录成功会出现如下的返回数据:

<script type="text/javascript" src="http://ci.doohui.com//api/uc?time=1408606349&code=1b1cOJzPrY8WqxKRsr1vlgP%2FSkweW2Db1PjzBJwsfPJhcTAV0vC%2FbY%2BKJ2g3kXaDBWRpaER0lVZOlgGwnGrNXvW6zmqUas8BSnEHB6g33N0LChTMtksDC9wbtE49UAEbTV%2FhYx0eDFk8Nql1tMviSNsK7eO6LbriySGMRw" reload="1"></script>


cookie就是在这步同步的。

如果您还有兴趣,之所以同步不成功,是没有返回这段的js代码,原因自己加断点之后发现就在这里:
uc_user_synlogin()这个函数,然后在count($_CACHE['apps'])>1 ,在data/cache/apps.php 里默认的配置文件只有一个,也就是>1永远不成立。没有这段js返回就不会去请求uc,就无法重置cookie啦。


如果还有问题,请发邮件到anven.cullen@gmail.com



Hex 发表于 2014-8-21 17:16:18

我确实没有验证过这个教程,因为我也不是作者,我只是转载。
还请作者本人来回答比较好。

另外,感谢楼主的分享。
页: [1]
查看完整版本: CI整合discuz-顺带解决了通信失败原因-nginx版本