ThinkPHP3.0整合UCenter1.6 之(二)

因为这几天有个项目要交付,所以一直很忙,没时间把thinkphp3.0整合ucenter1.6的后续写完,今天终于有点时间把tp整合uc来完成,让大家久等,实在不好意思!

  之前发表了一篇thinkphp3.0整合ucenter1.6 得到大家的认同,后来有些网友反映还是无法整合,后来总结了一下,发现是我上次没有说太清楚,最终原因是没有把uc.php里的路径全部修改过来,大家查找uc.php里面的config.inc.php,并修改成我们自己配置文件的名字 config_ucenter.php ,并修改相应的路径!这样就可以通信成功了!

  如果不成功的童鞋可以给我留言,或者直接咨询我,在我不忙的时候会回复大家的!

  好了 ,言归正传,现在开始正式的整合!我的思路是将ucenter 提供的api方法封装下,让我们的程序看起来更加干净整洁!首先,我们先在lib目录下新建一个文件夹,并命名为:Service。这个文件夹的功能一会在和大家讲解。然后再Service 里面建立我们自己的类,以方便和UC的通信,新建php文件,文件名为:UcService.class.php,

  类名UcService,我们在类里实现对UCenter的操作。要操作UCenter的API ,首先我们要导入相应的文件,相信大家已经想到了,第一个是UCenter的配置文件:config_ucenter.php,第二个是我的程序和UCenter通信的 client.php 文件 。导入这两个文件,我们在index.php入口文件增加一个常量,来定义我们的物理跟目录。

//项目物理跟路径

define('DOC_ROOT_PATH', rtrim(dirname(__FILE__), '/\\') . DIRECTORY_SEPARATOR);

然后我们在UcService.class.php里定义一个构造函数,来导入我们的这两个文件,

public function __construct()
{
include_once(DOC_ROOT_PATH . 'Conf/config_ucenter.php');
include_once(DOC_ROOT_PATH . 'uc_client/client.php');
}

  OK!相信童鞋们都已经完成了上述的步骤,下面我们来编写相应的代码,来实现和UCenter的同步,首先我们先来完成注册的代码。

//用户注册 这个方法是UcService.class.php的

public function register($username, $password, $email)
{
$uid = uc_user_register($username, $password, $email);
if($uid <= 0) {
if($uid == -1) {
return '用户名不合法';
} elseif($uid == -2) {
return '包含不允许注册的词语';
} elseif($uid == -3) {
return '用户名已经存在';
} elseif($uid == -4) {
return 'Email 格式有误';
} elseif($uid == -5) {
return 'Email 不允许注册';
} elseif($uid == -6) {
return '该Email 已经被注册';
} else {
return '未定义';
}
} else {
return intval($uid);
}
}

  这个函数是UCenter的注册验证,只要我们在程序中实例这个类,使用这个函数就能进行和UCenter的通信验证注册。

  那么我们是怎么使用它的呢?

  首先我的注册文件是 http://www.ttedu.com.cn/Register/teach,也就是说在你的程序目录里,Lib/Action/Home/下面有一个Register.class.php 文件,我们打开这个文件,如果没有请创建这个文件,我的目录下面是有分组的Home是分组的名称目录,如果没有配置的童鞋请直接在Action目录创建,这个类要继承Action哦!然后我们在在类里面创建一个teach的方法函数,用来显示一个注册的页面。

  然后我们在新建一个函数,用来处理teach方法函数提交的数据,并加入到数据库!这里是主要的喽哦!

public teach(){

$this->display();

}

public function regDo(){

if($this->isPost()){
if(!$_REQUEST['username'] || !$_REQUEST['email'] || !$_REQUEST['password']){
exit('data invalid.');
}
$nick = $_REQUEST['username'];
$email = $_REQUEST['email'];
$pw = trim($_REQUEST['password']);

//这个类需要在Conf/config.php里配置下的哦,一会下面会讲到!
$ucService = new UcService;
$uid = $ucService->register($nick, $pw, $email);
//成功注册到UC
if(!is_string($uid)){
$send_email = false;
$is_verifyed = 1;
//本地注册
$uModel = D('auser');
$data['user_id'] = $uid;
$data['nick'] = $nick;
$data['email'] = $email;
$data['password'] = md5($pw);
if($uModel->add($data)){
$this->success("注册成功!","__APP__/");
}else{
$this->error("注册失败!");
}
}else{
exit($uid);
}

}
}

  本地注册后面,童鞋们可以直接写你们的程序逻辑代码,执行这一步之前,我们要在Conf/config.php里加上一句,

  'APP_AUTOLOAD_PATH' => '@.Service',

  这句话的意思是告诉ThinkPHP,我们程序执行的时候自动导入Action下面的Service目录里的文件,如果不导入的话,在我们regDo里是会报错的哦 !会提示找不到UcService 类,下面我们来测试下是不是可以注册成功呢?

  我们打开http://www.ttedu.com.cn/Register/teach 填写用户名,密码,邮箱,提交!OK!程序提示我们注册成功了!那么我们进入UCenter看看是否有用户注册成功了呢?我刚才填写的是 用户名:test 密码:123456 邮箱:ttedus@126.com 在ucenter的用户管理我们看到已经有了 出现了我们刚才注册的用户,说明我们注册的已经成功了!下面就是登陆的代码了!写着太累了我直接打包到论坛里吧! 或者留下邮箱我发到你们邮箱!

修改代码: 1:将api和uc_client2个文件夹放入根目录。 2: 在admin/templates/default/sys/admin_left_tools.htm这个文件中添加: <li ><a href="admin_uc_setting.php" target="mainFrame" >一键整合UCenter </a></li> 3: 修改include/fun_user.php: 在 $success=false;后面增加 } } if(defined('UC_API') && $uc_login) { include_once(QISHI_ROOT_PATH.'uc_client/client.php'); $account=$usinfo['username']?$usinfo['username']:$account; list($uc_uid, $uc_username, $uc_password, $uc_email) = uc_user_login($account,$password); if ($uc_uid>0) { $login['uc_login']=uc_user_synlogin($uc_uid); if ($success==false)//UC成功74失败就注册,注册用户为UC的用户名, { global $_CFG; $_SESSION['activate_username']=$uc_username; $login['qs_login']=$_CFG['main_domain']."user/user_reg.php?act=activate"; } } elseif($uc_uid === -1 && $success)//74成功,UC失败,就注册到UC { $uc_reg_uid = uc_user_register($usinfo['username'], $password, $usinfo['email']); if ($uc_reg_uid>0) { $login['uc_login']=uc_user_synlogin($uc_reg_uid); } 4: 复制admin_uc_setting.php文件到admin下,复制admin_uc_fun.php到admin/include下。 5:复制文件夹uc到admin/templates/default/下。 6: 复制activate.htm到templates/default/user/下面。 7:将UCenter整合文件(即:upload改为ucenter)放在根目录下面。 安装步骤: 1:安装74CMS。 2:安装ucenter。 3:在74CMS后台-工具-一键安装UCENTER。 4:进入UCENTER管理平台,将对应的应用的主 URL后面的"/"删除。 (备注:由于是自动获取地址,所以在抓取主站数据的时候默认带有"/",但经测试不删除也能同步) 5:安装DISCUZ(选择已安装UCENTER)。 本人调试过直接安装discuz的时候整合UCENTER一起安装,但是论坛登入登出时主站无法同步,目前没找出原因。 欢迎大家交流,本人QQ 65016198, 群:203643352
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值