uc整合php--lsj1
- 格式:doc
- 大小:1.20 MB
- 文档页数:21
Ucenter是个一个极其牛逼的存在,整合了 ucenter就等于整合了所有php程序。因为ucenter_client的api开发包,这样只要整合成功了,那么就能一号通,很方便在各个应用里面使用同一个帐号密码,来同步登陆注册退出修改密码,不过整合的过程是非常痛苦的,最近看了网上的很多资料,稍微有点头目了,在此总结一下。
一般来说Ucenter整合php分以下三种情况:
① 整合康盛自己的产品,Discuz!,UCenter Home,SupeSite等等,这是最简单的;
② 整合官方支持UCenter建站的程序,如帝国CMS(ecms),PHPcms等等,这个稍微有点复杂;
③ 第三方需要自己设计代码的php应用,如PT的源代码nexusphp;
首先我们在本地先配置好php环境,推荐APMServ一键绿色配置,然后下载UCenter源代码,然后解压到网站根目录重命名为UCenter,然后安装。
针对第一种情况:
我们用Discuz!,UCenter Home举例子,首先分别下载源代码,解压到网站根目录重命名为Discuz和 UCenter_Home,然后分别安装,这里选仅安装Discuz!,因为我们已经安装好了Ucenter 这里取消开启门户,家园,群组功能,方便等下演示,同理安装好,Ucenter-home,
然后就可以安装好了,然后我们进UCenter
我们可以发现都已经自动通信成功了,然后我们只要分别点编辑进去之后
勾选开启同步登录,接受通知就可以了,一般来说第一次需要两边登录激活一下,以后就直接同步登陆了。如果说通信失败了,那么因为是自带的程序,所有的api接口文件都有了,所以只要把
这个配置信息复制粘贴,然后覆盖到config.php,文件名文件位置不定,请自己寻找,一般来说自带的产品还是比较简单的。
Ps:貌似Discuz退出了,UCenter并不退出,Discuz登录了,UCenter并不会登陆,难道是bug!?应该是单向的……UCenter-Home登录和退出会使得所有整合的应用同步登陆和退出.不知道为什么Discuz登陆的时候其他应用都没有同步登录,UCenter-Home登陆的时候其他应用都能够同时的登录和退出。也不知道是不是单向问题,不过学校里面已经设置好了,所以直接忽略这个问题。
针对第二种情况:
我们用HDwiki做介绍,依然是下载解压到网站根目录下,重命名为HDwiki,安装,一般都是需要安装插件,这种都是官方出品,安全可靠,以管理员帐号登录HDWiki系统后,进入系统设置(管理后台)。在HDWiki插件功能中,点击“安装插件”进入安装界面。在输入框内输入正确的UCenter插件的URL地址,再点击“下载”按钮。待系统提示“安装成功”后,该插件的安装即已完成。此时,打开插件管理功能,已经可以看到插件列表中已经有了UCenter插件。上面的是老版本,新版本的话,如果以前在hdwiki插件中安装过uc插件,需要卸载uc插件. HDWIKI后台 全局—>扩展设置—>ucenter设置(或者在搜菜单中直接搜索 ucenter也可以,
Dedecms的话还是需要自己下UCenter插件的,稍微麻烦点,可能还要改配置文件,虽然比康盛自己产品同步麻烦,但是还是可行的。
针对第三种情况:
我们以PT的源代码做例子,官方并没有直接给出与UCenter相连得接借口,所以还得自己设计,同样下载PT源代码解压到网站根目录重命名nexusphp,然后安装好,其实这个的话主要是新建数据库导入数据库文件,还有就是设置管理员,如果一切做好了,那么首先需要把接口文件都拷过去,
第一步:打开下载UCenter文件夹中的advanced文件夹,这是和其它网站的接口文件,里面的document就是接口的API说明,examples文件夹就是一些使用例子,也可以根椐这些例子参照使用,uc_client是接口文件。
第二步:从examples文件夹中复制include文件夹和api文件夹到你网站根目录,include文件夹内包含一个文件叫db_mysql.class.php,这是连接数据库的类。
第三步:将uc_client文件夹整个复制到你网站根目录,uc_client之前说了是接口代码,现在根目录已经有include和uc_client两个文件夹了。
第四步:复制examples文件夹内的config.inc.php到你网站的根目录,这是配置UCenter的配置文件
第五步:配置config.inc.php的各种参数,
define(’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’,”);//UCenter数据库密码
define(’UC_DBNAME’,‘ucenter’);//UCenter数据库名称
define(’UC_DBCHARSET’,‘utf8’);//UCenter数据库字符集 define(’UC_DBTABLEPRE’,‘ucenter.uc_’);//UCenter数据库表前缀
//通信相关
define(’UC_KEY’,‘24601308′);//与UCenter的通信密钥,要与UCenter保持一致
define(’UC_API’,‘http://yourwebsite/uc_server’);//UCenter的URL地址,在调用头像时依赖此常量
define(’UC_CHARSET’,‘utf-8’);//UCenter的字符集
define(’UC_IP’,”);//UCenter的IP,当UC_CONNECT为非mysql方式时,并且当前应用服务器解析域名有问题时,请设置此值
define(’UC_APPID’,8);//当前应用的ID
//ucexample_2.php用到的应用程序数据库连接参数
$dbhost=‘localhost’;//数据库服务器
$dbuser=‘root’;//数据库用户名
$dbpw=”;//数据库密码
($dbname=‘ucenter’;//数据库名
$pconnect=0;//数据库持久连接0=关闭,1=打开
$tablepre=‘example_’;//表名前缀,同一数据库安装多个论坛请修改此处
$dbcharset=‘utf-8’;//MySQL字符集,可选‘gbk’,‘big5′,‘utf8′,‘latin1′,留空为按照论坛字符集设定)这部分貌似可以不要,实测。
//同步登录Cookie设置
$cookiedomain=”;//cookie作用域
$cookiepath=‘/’;//cookie作用路径
我们就可以看到通信成功了。至于同步登陆的话有点麻烦,暂时没搞懂。暂时只看得懂官方的Example,但是自己却不会改。
针对有数据库的存在:
这是注册和登入的主界面相当于index.php,代码调用code文件夹里面的代码:
/**
* UCenter 应用程序开发 Example
*
* UCenter 简易应用程序,应用程序有自己的用户表
* 使用到的接口函数:
* uc_authcode() 可选,借用用户中心的函数加解密 Cookie
* uc_pm_checknew() 可选,用于全局判断是否有新短消息,返回 $newpm 变量
*/
include './config.inc.php';
include './include/db_mysql.class.php'; $db = new dbstuff;
$db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);
include './uc_client/client.php';
/**
* 获取当前用户的 UID 和 用户名
* Cookie 解密直接用 uc_authcode 函数,用户使用自己的函数
*/
if(!empty($_COOKIE['Example_auth'])) {
list($Example_uid, $Example_username) = explode("\t",
uc_authcode($_COOKIE['Example_auth'], 'DECODE'));
} else {
$Example_uid = $Example_username = '';
}
/**
* 各个功能的 Example 代码
*/
switch(@$_GET['example']) {
case 'login': //UCenter 用户登录的 Example 代码
include 'code/login_db.php';
break;
case 'logout':
//UCenter 用户退出的 Example 代码
include 'code/logout.php';
break;
case 'register':
//UCenter 用户注册的 Example 代码
include 'code/register_db.php';
break;
}
echo '
if(!$Example_username) {
//用户未登录
echo '登录 ';
echo '注册 ';
} else {
//用户已登录
echo '
echo $Example_username.'