济溪环保公益

 找回密码
 立即注册

微信登录

微信扫一扫,快速登录

搜索
查看: 1904|回复: 1

ZZPHPWIND8整合Ucenter的方法 PW8的接口整合UCenter

[复制链接]
发表于 2010-11-17 13:23:23 | 显示全部楼层 |阅读模式


   
2010-10-23 13:19
        来自PHP之路的将PHPWIND8整合Ucenter的方法,希望对广大站长有用!
整合方法如下:
自PW8推出以来,下载量屡屡突破,关注度空前高涨,越来越多的网站投降了她的怀抱。当然,如果有的用户之前是整合了UCenter,而且还有其他应用也整合了UCenter,这个时候就为难了。一方面PW8很吸引人,想用PW8建站,另一方面又没办法放弃UCenter以及其他整合了的应用。对于很多朋友来说,这是一个很纠结的问题。 前段时间,我一朋友就跟我说到这个问题,希望我能帮他整合一下。为此,我小研究一下,帮他整合了。下面,我就与大家一起分享一下我的解决方案。

    我们知道PW程序根目录有一个passport_client.php的文件,可能很多朋友不知道是干啥的。其实这个文件是PW自带的一个会员接口,第三方应用可以通过此接口与PW实现同步登录注册等。大家应该知道了,是的,我就利用此文件与UC整合。

passport_client.php需要传入以下参数:
1.$action. 操作方法,如login,quit
2.$userdb. 用户数据:用户名,密码,email等
3.$forward. 成功后的转向地址
4.$db_pptkey 密钥KEY(后台开启第三方整合设置的)

好,了解了它的作用后,我们就可以开始做整合了。
先下载UCenter,取里面实例的uc.php文件,编辑

定义两个变量
define(&#39W_URL', '您的PW论坛地址');
define(&#39W_KEY', &#39W后台整合设置的key');

新增以下两个function

        function passport($action,$userdb,$forward = ''){         if($action == 'login'){             foreach($userdb as $key=>$val){                 $userdb_encode .= $userdb_encode ? "&$key=$val" : "$key=$val";             }         }         $userdb_encode = str_replace('=','',$this->strCode($userdb_encode));         $verify = md5($action.$userdb_encode.$forward.PW_KEY);         header('Location: '.PW_URL.'/passport_client.php?action='.$action.'&userdb='.rawurlencode($userdb_encode).'&forward='.rawurlencode($forward).'&verify='.$verify);         exit;     }
    function strCode($string,$action='ENCODE'){ //将参数按PW的接收方式进行编码         $action != 'ENCODE' && $string = base64_decode($string);         $code = '';         $key  = substr(md5($_SERVER["HTTP_USER_AGENT"].PW_KEY),8,18);         $keylen = strlen($key); $strlen = strlen($string);         for ($i=0;$i<$strlen;$i++) {             $k = $i % $keylen;             $code  .= $string[$i] ^ $key[$k];         }         return ($action!='DECODE' ? base64_encode($code) : $code);     }
同步注册登录
    [li]    function synlogin($get, $post) { [/li][li]    $userdb = array(     [/li][li]        'uid' =>$get['uid'], [/li][li]        'username'    => $get['username'], [/li][li]        'password'    => $get['password'], [/li][li]        'email'        => $get['email'], [/li][li]        'time'        => time(), [/li][li]    ); [/li][li]        $forward = 'http://blog.phpfor.com'; //登录成功后转向地址 [/li][li]        $this->passport('login',$userdb,$forward); // 向passport_client.php传送参数 [/li][li]    }[/li]
同步退出
找到 synlogout 方法,修改为
    [li]function synlogout($get, $post){ [/li][li]    $forward = 'http://blog.phpfor.com'; //退出后转向地址 [/li][li]    $this->passport('quit','',$forward); [/li][li]}[/li]
OK,uc.php文件修改完毕。我们把它传到pw根目录下的 api/ 里,然后去UCenter里面增加一个应用,将相关参数补充到uc.php中,保证通信成功,这个就不用我教了吧:)。
至此,PW8与UCenter将实现完美注册,同步登录,退出。赶紧去试试吧:)
大家试试去吧!!
 楼主| 发表于 2010-11-17 13:27:03 | 显示全部楼层
思考是否使用uc将pw和hdwiki整合
您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

小黑屋|手机版|济溪 ( 京ICP备17053947号-1 )

GMT+8, 2025-6-19 05:47 , Processed in 0.027070 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表