今天经过研究发现使用discuz论坛的uc_client以及配置文件可以同步登陆登出uchome,使用uchome的uc_client和配置文件可以同步登陆登出discuz论坛
查看了代码才发现是client.php只生成一条script语句,所以就只能登陆一个应用程序了,我修改了文件使uc_user_synlogin可以登陆所有应用,uc_user_synlogout可以登出所有应用
下面为步骤:
一、将论坛中的 uc_client文件夹 以及 config.inc.php 文件复制到网站根目录下的文件夹中,比如新建的文件夹uc
在config.inc.php文件的最后加入所有应用程序的id,这些id可以去ucenter的后台查看
// ===========================所有应用id
define('ALL_APPID','1|2');
二、修改uc_client文件夹下的client.php文件
修改程序 uc_user_synlogin 和 uc_user_synlogout 将其中的 uc_api_post 改为 uc_api_post2
然后将下列代码复制到 client.php的最后,再使用同步登陆和登出程序就可以同时登陆所有的应用了
// =========================以下为云之麒修改=============================
function uc_api_post2($module, $action, $arg = array()) {
$s = $sep = '';
foreach($arg as $k => $v) {
$k = urlencode($k);
if(is_array($v)) {
$s2 = $sep2 = '';
foreach($v as $k2 => $v2) {
$k2 = urlencode($k2);
$s2 .= "$sep2{$k}[$k2]=".urlencode(uc_stripslashes($v2));
$sep2 = '&';
}
$s .= $sep.$s2;
} else {
$s .= "$sep$k=".urlencode(uc_stripslashes($v));
}
$sep = '&';
}
$postdata = uc_api_requestdata2($module, $action, $s);
$result = "";
foreach($postdata as $key => $value){
$result = $result.uc_fopen2(UC_API.'/index.php', 500000, $value, '', TRUE, UC_IP, 20);
}
return $result;
}
function uc_api_requestdata2($module, $action, $arg='', $extra='') {
$input = uc_api_input($arg);
$post = array();
$allId = explode("|",ALL_APPID);
foreach($allId as $key => $value){
$post[] = "m=$module&a=$action&inajax=2&release=".UC_CLIENT_RELEASE."&input=$input&appid=".$value.$extra;
}
return $post;
}
// =========================以上为云之麒修改=============================
PS:修改好ucenter后台后再去修改,论坛下的config.inc.php,不要使用记事本打开修改,txt保存utf8文件时会自动给文件添加BOM,这时后台就会显示通信失败,建议使用UltraEdit编辑,保存时选择另存 utf8 - 无BOM
海口
http://www.souhaikou.com
分享到:
相关推荐
UCenter通信和同步登陆,自己亲身体会写一个demo,绝对没有问题。
用于MediaWiki和UCenter之间的同步登陆,下载后解压到extensions文件夹中。具体用法请参考:http://www.haosblog.com/?mod=article_read&id=471
Thinkphp整合ucenter同步登录注册退出
网上asp.net同步Ucenter的实例...vs同步登陆实例ucenter_demo,这个实例绝对好用,只需要配置好 web.config三个地方,通信密钥,Ucenter通信地址及编码。其它都不用配置,如果不通信失败的话,把服务的Ip地址转化为域名
Discuz 自动同步登陆通达OA的完美解决办法,自己看了一下UCenter、Discuz同步登陆的机制,提炼出了以下用于同步登陆Discuz的代码
3、登入、登出等操作的同步,使用post方式调用UCenter的API接口,如果成功,将返回一段代码,其代码输出到页面将达到跨域请求各应用,应用获得请求后自行进行cookie或session的操作。 4、注册等非同步操作,将不会...
ucenter,uchome,discuz同步注册免激活同步登录 覆盖相应文件即可,如需了解更改内容可先比对文件。
做Web开发经常会要求实现多站点同步登录的情况,对于PHP开发来说,我们可以使用ucenter来实现多个站点同时登陆同时退出,用户同步的...检测完成后实现本地登陆,代码自己写,然后让其他应用程序也登陆,此时调用外部
ucenter_1.6 多项目双向同步全攻略(图文详解下)
ecshop整合ucenter配置文件
UCenter应用程序开发简单实例
UCenter与Asp.net应用同步通信Demo
图文介绍ShopEX登陆后不能将会员登陆状态同步给其他应用的情况和解决方案,本例中使用了ShopEX 4.8.5,天天团购 2.6.0和UCenter 1.5.2
asp.net版ucenter接口程序源码,可以实现.net程序与discuz用户通讯,达到同步登录、退出、注册、修改。内附如何解决IE浏览器下同步通讯Cookie失效问题,真正达到.net通过ucenter与discuz论坛完美结合。
java整合Ucenter统一登陆、退出源码,头像、消息、统一认证管理
主要实现网站登录时能够同步登录Discuz(PHP)论坛,同时实现同步注册、修改、用户删除、登出等功能,网站引用DS.Web.UCenter.dll即可,并附带dll的源码和UCenter的配置说明文档。
UCenter作为整合用户的这样一个开源插件,对于PHP开发的,甚至其它开发语言如.net,java.asp等开发人员解决多个项目整合到一起,用户进行同步登录,同步退出等,同步消息等都是...下面分享下以前整合项目中的一些经验
看到太多的各类系统整合ucenter出现的各种各样的问题,比如无法同步登入,同步退出,注册用户时候出现问题