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.'