|
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(' W_URL', '您的PW论坛地址');
define(' W_KEY', ' W后台整合设置的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将实现完美注册,同步登录,退出。赶紧去试试吧:) | | 大家试试去吧!! |
|
|