在上一章中的ThinkPHP3.1.2整合UCenter详解(二)已经实现了通讯成功了!
接下来我们的目标:在thinkphp中会员注册成功时,UCenter Home也同时注册成功。
首先在项目W3note入口文件index.php配置一个常量
1 |
define( 'WBLOG_ROOT_PATH' , rtrim(dirname( __FILE__ ), '/\\' ) . DIRECTORY_SEPARATOR); //物理根目录 |
常量WBLOG_ROOT_PATH是网站根目录wblog1的物理根目录,在我本地服务器打印输出:
D:\phpsever\apache2\htdocs\wblog1\
有必要在这里强调一下,理解WBLOG_ROOT_PATH很重要,因为在调试过程中路径最容易出错。
还记得前面我们建的UcService.class.php 文件吗?如果忘记了请看一下前面的目录树。打开UcService.class.php文件,新建一个类UcService,然后写一个构造方法导入W3note/Conf/config_ucenter.php和uc_client/client.php两个文件。代码:
1 |
class UcService{ |
2 |
|
3 |
public function __construct(){ |
4 |
|
5 |
include_once (WBLOG_ROOT_PATH . 'W3note/Conf/config_ucenter.php' ); |
6 |
include_once (WBLOG_ROOT_PATH . 'uc_client/client.php' ); |
7 |
} |
接下来我们写一个会员注册方法register,如
1 |
public function register( $username , $password , $email ){} |
方法体放什么代码呢?其实很简单,因为UCenter的开发文档已经为我们准备好了!
找到之前下载的UCenter_1.6.0_SC_UTF8,用浏览器打开UCenter_1.6.0_SC_UTF\advanced\document\index.htm,然后在左边的菜单栏找到“用户接口”,看到用户注册示例 (PHP),把其下的代码复制过来。如下
01 |
/** |
02 |
* 会员注册 |
03 |
*/ |
04 |
public function register( $username , $password , $email ){ |
05 |
|
06 |
$uid = uc_user_register( $username , $password , $email ); //UCenter的注册验证函数 |
07 |
if ( $uid <= 0) { |
08 |
if ( $uid == -1) { |
09 |
return '用户名不合法' ; |
10 |
} elseif ( $uid == -2) { |
11 |
return '包含不允许注册的词语' ; |
12 |
} elseif ( $uid == -3) { |
13 |
return '用户名已经存在' ; |
14 |
} elseif ( $uid == -4) { |
15 |
return 'Email 格式有误' ; |
16 |
} elseif ( $uid == -5) { |
17 |
return 'Email 不允许注册' ; |
18 |
} elseif ( $uid == -6) { |
19 |
return '该 Email 已经被注册' ; |
20 |
} else { |
21 |
return '未定义' ; |
22 |
} |
23 |
} else { |
24 |
return intval ( $uid ); //返回一个非负数 |
25 |
} |
26 |
} |
27 |
|
28 |
} |
这个注册方法register的作用是,在wblog1的会员注册中成功注册一个会员时,也会成功注册UCenter Home的会员中心中。UCenter的注册方法我们在上面已经写好了,现在回到thinkphp。我们在前台W3note项目的控制器MemberAction写一个注册方法,代码如下:
01 |
/* |
02 |
用户名:$username, |
03 |
密码:$password, |
04 |
邮箱:$email |
05 |
*/ |
06 |
public function addmember(){ |
07 |
if ( $this ->isPost()){ |
08 |
$username = $_POST [ 'username' ]; |
09 |
$email = $_POST [ 'email' ]; |
10 |
$password = trim( $_POST [ 'password' ]); |
11 |
import( "@.ORG.UcService" ); //导入UcService.class.php类 |
12 |
$ucService = new UcService; //实例化UcService类 |
13 |
$uid = $ucService ->register( $username , $password , $email ); //注册到UCenter |
14 |
|
15 |
if ( $uid ){ //如果上面注册成功将返回一个int类型的数字 |
16 |
|
17 |
$M = D( 'Member' ); |
18 |
|
19 |
if ( $vo = $M ->create()) { |
20 |
if ( $M ->add()) { |
21 |
$this ->success( '注册成功!' ); |
22 |
} else { |
23 |
$this ->error( '注册失败!' ); |
24 |
} |
25 |
} else { |
26 |
$this ->error(); |
27 |
} |
28 |
} else { |
29 |
exit ( $uid ); |
30 |
} |
31 |
} else { |
32 |
$this ->error( '非法数据!' ); |
33 |
} |
34 |
} |
我们在thinkphp会员注册页面注册一个帐号,提交表单后,查看wblog1和UCenter的会员数据表,发现两张表都存相同的帐号,说明同步注册已经成功了!