Discuz论坛,包含了一个叫Ucenter的用户平台,通过这个平台,我们可以把Discuz论坛和Ucenter home、ecshop以及dedecms、帝国CMS等开源平台的用户统一起来,也可以自己开发基于Ucenter的系统,保持用户与Discuz论坛的统一。


    一、官方手册附件中是Ucenter的接口开发手册,其中,developguide文件夹下是手册的HTML文件,可以直接双击打开阅读,client文件夹中是提供调用的库文件,要把它复制到每个应用的文件夹中。examples里面,则是一个实例项目,如果时间充裕,建议安装这个项目进行阅读和调试。


    二、Ucenter服务器设置

    1、用管理员账户进入管理中心,点击右侧的Ucenter链接

    2、输入Ucenter的管理员密码,确认后单击左侧的应用管理,添加新应用,选择自定义安装,以下是我填写的自定义内容,可以参考以一下:

    填写完毕返回应用列表后,你会发现,原来正常安装的应用显示的都是“通信成功”,只有自定义的那个,显示的是“通信失败”。

    三、API

    1、在应用根目录下新建一个api目录(以我填写的应用图为例,应该是'/home/public/api',每个人的实际目录自然各不相同)。

    先做个小实验:新建一个uc.php文件,里面只输入如下内容:

    <?php

        echo '1';

    ?>

    然后,回到管理中心的应用管理列表,你会发现,已经显示通信成功了。


    2、当然,目前这个uc.php实际上是没有用处的。所以我们要从examples/api中复制uc.php到api目录下。uc.php的作用是为 ucenter提供一个接口,这样,当用户在discuz论坛或是其它应用比如ecshop中登录或退出时,我们自定义的应用也能够同步登陆和退出。


    3、复制过来的uc.php还需要修改才能重新使用,它include了config.inc.php和mysql.class.php两个文件。mysql.class.php无需任何修改,而config.inc.php,实例中已经有了详细的注释。阅读一下 uc.php的源码,注意这两个文件的路径确保其被正确引用,这时还是回到管理中心的应用管理列表,确定应用仍然是“通信成功”的。


    4、修改uc.php中的uc_note类中的synlogin方法和synlogout方法,根据你自己的需要写入登录和退出代码。这样,当用户在Discuz论坛中登录或退出时, 我们的应用就能同步登录和退出了。比如,您可以在我的论坛http://bbs.zj.com,博客http://ublog.zj.com和俱乐部http://www.blog1.zj.com 之间进行测试。


    四、应用本身的同步登录和同步退出当然,除了通过discuz论坛来控制应用的登录退出之外,我们也会希望,通过应用本身也能实现的同步登录和同步退出。

 

    1、在登录和退出的源码中,必须正确包含config.inc.php和client.php文件;

 

    2、在client.php中,我们用到了两个函数用于登录,第一个函数是

    uc_user_login($username,$password)

    用于用户登录,登录后返回一个数组,如果登录失败,返回数组的第一个元素值为 -1($array[0]==-1),如果登录成功,返回的数组为

    $array(0=>uid的值,1=>username,2=>password的md5值......);

    也就是说,当返回数组的第一个元素大于0时,我们可以继续登录操作,小于0时则报错;


    3、第二个函数时uc_user_synlogin($uid),运行上一个函数成功后,可以直接运行这个函数来登录其它应用,注意用法是这样的: 

    <?php

        echo uc_user_synlogin($uid);

    ?>

    测试这个代码你会发现,实际上它输出的是一段script代码,事实上仍然是通过客户端分别登录不同应用的,只不过用户看不到而已。


    4、同步退出的函数则是

    <?php

        echo uc_user_synlogout();

    ?>

    直接输出这个函数返回的script代码,就能够实现ucenter的同步退出。