您的位置:首页 > 运维架构 > 网站架构

UCenter整合网站同步登录

2017-02-15 10:12 274 查看
康盛官网下载UCenter代码
http://www.comsenz.com/downloads/install/ucenter#down_open
解压后advanced\document目录为UCenter接口开发手册,可以参照学习







使用Ucenter进行同步登录的一半分为三类网站:

1、 康盛自己的应用 UCenter Home、Discuz、SupeSite、X-Space。

图文整合

2、 支持UCenter插件的网站,如PHPCMS、Destoon、Dede、ECShop等等。

图文整合

这些网站已经集成了UCenter插件,相应的register、login、logout中对uc同步进行了相应

的处理,只需要在界面中设置uc就可以了。

2、 再就是需要手动添加同步登陆代码的网站。

代码整合

无论是图文整合还是代码整合其实都是在代码中实现了一下的步骤,只不过图文整合的代码中加载了Ucenter的代码进行了整合。

UCenter源代码中upload为Ucenter服务器,配置好后,进入install目录,安装好UCenter后,登陆Ucenter。

应用管理->添加新应用

 

 

 

需要输入的内容:应用类型、应用的名称、应用的主URL、通信密钥

应用文件接口名称一般不要更改,使用默认的就好。

然后提交就可以,提交后,将【应用的 UCenter 配置信息】内容拷贝出来,需要配置到同步网站的config.inc.php中。

回到应用管理,你可以看到现在的通信情况为【通信失败】。

那么下一步需要我们配置要同步的网站了

首先将下载的Ucenter的源代码中的uc_client目录拷贝到要进行同步登录的网站中。

引入uc配置 

include 'config.inc.php';

include 'uc_client/client.php';

其中config.inc.php中添加了UCenter配置信息,如下所示

define
a991
('UC_CONNECT', 'mysql');// 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen()

// mysql 是直接连接的数据库, 为了效率, 建议采用 mysql

//数据库相关 (mysql 连接时, 并且没有设置 UC_DBLINK 时, 需要配置以下变量)

define('UC_DBHOST', 'localhost'); // UCenter 数据库主机

define('UC_DBUSER', 'root'); // UCenter 数据库用户名

define('UC_DBPW', 'root'); // UCenter 数据库密码

define('UC_DBNAME', 'ucenter'); // UCenter 数据库名称

define('UC_DBCHARSET', 'utf8'); // UCenter 数据库字符集

define('UC_DBTABLEPRE', '`ucenter`.uc_'); // UCenter 数据库表前缀

define('UC_DBCONNECT', '0');

//通信相关

define('UC_KEY', '123123789'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致

define('UC_API', 'http://www.ucenter.com');
// UCenter 的 URL 地址, 在调用头像时依赖此常量

define('UC_CHARSET', 'utf-8'); // UCenter 的字符集

define('UC_IP', ''); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值

define('UC_APPID', '1'); // 当前应用的 ID

define('UC_PPP', '20');

//本地配置的

//同步登录 Cookie 设置

$cookiedomain = ''; // cookie 作用域

$cookiepath = '/'; // cookie 作用路径

引入配置文件后,为网站的注册、登陆、注销添加同步代码

1、注册
//在UCenter注册用户信息
$uid = uc_user_register($_POST['username'], $_POST['password'], $_POST['email']);
if($uid <= 0) {
if($uid == -1) {
echo '用户名不合法';
} elseif($uid == -2) {
echo '包含要允许注册的词语';
} elseif($uid == -3) {
echo '用户名已经存在';
} elseif($uid == -4) {
echo 'Email 格式有误';
} elseif($uid == -5) {
echo 'Email 不允许注册';
} elseif($uid == -6) {
echo '该 Email 已经被注册';
} else {
echo '未定义';
}
} else {
//注册成功,设置 Cookie,加密直接用 uc_authcode 函数,用户使用自己的函数
setcookie('Example_auth', uc_authcode($uid."\t".$_POST['username'], 'ENCODE'));
echo '注册成功<br><a href="'.$_SERVER['PHP_SELF'].'">继续</a>';
}

2、登录

list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);  //通过接口判断登录帐号的正确性,返回值为数组

$ucsynlogin = uc_user_synlogin($uid);    //生成同步登录代码

$ ucsynlogin内容如下,通过script通知同步的网站调用synlogin进行登录

<script type="text/javascript" src="http://www.ucexample.com/api/uc.php?time=1408084493&code=c5e2NSV1R5VNMf8l0WFFzPWSQMEAKALZ%2BBWle58cbNajXGDB93nhEFCgZvQAfbsubRs9rSxxhJoEvKONyvIfD00RfdEKtnyBPAqSIw3DkBEj%2FXZaV%2FKkMn4847GZHFbyDjZGz1gkIv%2Fp57o2zWpqTJJITFrXMG8mOKPTfMs"
reload="1"></script>

解密后http://www.ucexample.com/api/uc.php?action=synlogin&username=destoon&uid=4&password=08f253a1673403dae5b04de4512455e5&time=1408087222

3、注销

setcookie('Example_auth', '', -86400); //注销本地

$ucsynlogout = uc_user_synlogout(); //生成同步退出的代码

echo '退出成功'.$ucsynlogout.'<br><a href="'.$_SERVER['PHP_SELF'].'">继续</a>'; //输出同步退出的代码

$ucsynlogout内容如下,通知同步的网站uc.php调用synlogout注销cookie

<script type="text/javascript" src="http://www.ucexample.com/api/uc.php?time=1408086966&code=e839sEychnkXbEC986Ytm5DjLIFafLCYL0p5z6%2Bw6sAbwx7rvsXiQLnB0DRuBFUoaODxY9bPEpcQGNWqvg" reload="1"></script>

解密后http://www.ucexample.com/api/uc.php?action=synlogout&time=1408087295

4、修改api/uc.php内的函数的cookie和db操作

uc.php           uc_client.php

deleteuser uc_pm_deleteuser

renameuser 

gettag uc_tag_get

synlogin uc_user_synlogin

synlogout uc_user_synlogout

updatepw 

updatebadwords 

updatehosts 

updateapps 

updateclient 

updatecredit 

getcreditsettings 

updatecreditsettings

在common.inc.php中

判断账号是否已经登录时候从cookie取值

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ucenter php 同步