1、做 ThinkPHP 开发有一段时间了,还没有写过什么文章,今天不忙,就来 A5 转了下,发现有关 Thinkphp 和UCenter 整合的文章很少,而且即使有些也是一知半解,版本过时,那么今天晓渔就给大家讲解下 Thinkphp框架怎么来整合 UCenter。首先我们先安装 Thinkphp,我们这次教程使用的是 Thinkphp3.0 稳定版,首先我们下载Thinkphp3.0,解压并放在自己的 www 目录,在根目录新建 index.php 文件 并写入: require_once ./ThinkPHP/ThinkPHP.php; 通过本机游览 index.php 、 thinkphp
2、 会生成相应目录。 (*_*) 嘻嘻 很智能的哦。然后配置 config.php 写入你的数据库连接配置,这个晓渔就不写了,请不会的童鞋查下手册吧!然后下载目前最新版本的 UCenter 1.6 版本,在网站根目录新建 ucenter 目录,解压 UCenter,把upload 目录里的所有文件上传到你刚才新建的 ucenter 目录里,在游览器输入 http:/localhost/uceter/install/ 如果不是这个访问地址请换成相应的访问地址哦 ! 安装 ucenter。然后找到下载的 UCenter,把 advanced 目录里面的 uc_client 和 examples 下面
3、的 api 文件夹复制到你的网站根目录,是好 ThinkPHP 同级目录哦。现在开始进行我们的 api 目录里面的 uc.php 配置了,首先我们用编辑器打开这个文件,找到 36 行的位置,发现这里导入了一个配置文件 require_once DISCUZ_ROOT./config.inc.php; 基于ThinkPHP 的目录结构,所有的配置文件都放在 Config 目录里,那么我们在 Config 目录里新建 config_ucenter.php 文件,并把 uc.php 文件 36 行左右的 require_once DISCUZ_ROOT./config.inc.php; 修改为 re
4、quire_once DISCUZ_ROOT./Conf/config_ucenter.php; 有的童鞋可能会问了 config_ucenter.php 怎么配置呢?其实这个是非常简单的,甚至不用我们来写代码,直接复制粘贴就 OK 了 ,我们先登录到 ucenter 应用管理,添加一个应用吧!点击左侧菜单栏 应用管理 ,然后我们看到还没有应用,那么我们点击添加应用,哇,让我们填写的还挺多啊。那么我们首先看选择应用,因为我们是自己的程序,选择其他吧,应用名称,这个随便起个名字就可以 20 字节之内哦。应用的主 url ,我们这次讲解的是 Thinkphp 整合 Ucenter 那么我们的 Th
5、inkphp 是在跟目录的,这里我填入 http:/ 童鞋们如果是本地就填写 http:/localhost 不用加 “/“ 哦,下面是应用 IP,后面说明说不用填写,那么我们就留空吧,以为我比较懒 呵呵!应用密钥?这里怎么填呢。其实这里随便写入些字符串就可以 ,这个密钥是两个程序之间互通的严重,相当于你去别人家拿东西,别人最起码要认识你一样,如果别人都不认识你,怎么会把东西给你呢?更何况是网站核心的会员信息啊。呵呵!我们测试用 ,随便填上点吧 “123456” 呵呵 ,我比较懒吧!应用的物理路径?也提示说可以不用填写,那么留空吧!个人资料页面?这个有点犯难了,UCenter 怎么会这么智能
6、呢?留空吧。应用程序名称,他已经帮我填好了,咱们跳过!呵呵标签单条显示模板 不知道干嘛的 跳过吧。标签模板标记说明 继续跳过。是否开启同步登录 这个不用说了 选中。 是否接受通知 继续选中。OK 了 基本信息填完了,提交下 。通信失败?这是为什么呢?头疼啊。我们看下面多了个 “应用的 UCenter 配置信息” 右侧还有详细说明:当应用的 UCenter 配置信息丢失时可复制左侧的代码到应用的配置文件中 。一切变的明了了。复制文本框内的配置信息,我记得我们之前新建一个 config_ucenter.php 的文件还是空的,难道放这里的吗?那么试一下吧!把这些信息粘贴到里面,保存。 在看 uce
7、nter 刷新下! OK 通信成功!不错,基本通信我们就完成了!因为这几天有个项目要交付,所以一直很忙,没时间把 thinkphp3.0 整合 ucenter1.6 的后续写完,今天终于有点时间把 tp 整合 uc 来完成,让大家久等,实在不好意思!之前发表了一篇 thinkphp3.0 整合 ucenter1.6 得到大家的认同,后来有些网友反映还是无法整合,后来总结了一下,发现是我上次没有说太清楚,最终原因是没有把 uc.php 里的路径全部修改过来,大家查找 uc.php 里面的 config.inc.php,并修改成我们自己配置文件的名字 config_ucenter.php ,并修改
8、相应的路径!这样就可以通信成功了!如果不成功的童鞋可以给我留言,或者直接咨询我,在我不忙的时候会回复大家的!好了 ,言归正传,现在开始正式的整合!我的思路是将 ucenter 提供的 api 方法封装下,让我们的程序看起来更加干净整洁!首先,我们先在 lib 目录下新建一个文件夹,并命名为:Service。这个文件夹的功能一会在和大家讲解。然后再 Service 里面建立我们自己的类,以方便和 UC 的通信,新建 php 文件,文件名为:UcService.class.php,类名 UcService,我们在类里实现对 UCenter 的操作。要操作 UCenter 的 API ,首先我们要导
9、入相应的文件,相信大家已经想到了,第一个是 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_
10、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
11、);if($uid display();public function regDo()if($this-isPost()if(!$_REQUESTusername | !$_REQUESTemail | !$_REQUESTpassword)exit(data invalid.);$nick = $_REQUESTusername;$email = $_REQUESTemail;$pw = trim($_REQUESTpassword);/这个类需要在 Conf/config.php 里配置下的哦,一会下面会讲到!$ucService = new UcService;$uid = $ucSer
12、vice-register($nick, $pw, $email);/成功注册到 UCif(!is_string($uid)$send_email = false;$is_verifyed = 1;/本地注册$uModel = D(auser);$datauser_id = $uid;$datanick = $nick;$dataemail = $email;$datapassword = md5($pw);if($uModel-add($data)$this-success(“注册成功!“,“_APP_/“);else$this-error(“注册失败!“);elseexit($uid);本
13、地注册后面,童鞋们可以直接写你们的程序逻辑代码,执行这一步之前,我们要在Conf/config.php 里加上一句,APP_AUTOLOAD_PATH = .Service,这句话的意思是告诉 ThinkPHP,我们程序执行的时候自动导入 Action 下面的 Service 目录里的文件,如果不导入的话,在我们 regDo 里是会报错的哦 !会提示找不到 UcService 类,下面我们来测试下是不是可以注册成功呢?我们打开 http:/ 填写用户名,密码,邮箱,提交!OK!程序提示我们注册成功了!那么我们进入 UCenter 看看是否有用户注册成功了呢?我刚才填写的是 用户名:test 密码:123456 邮箱: 在 ucenter 的用户管理我们看到已经有了 出现了我们刚才注册的用户,说明我们注册的已经成功了!下面就是登陆的代码了!写着太累了我直接打包到论坛里吧! 或者留下邮箱我发到你们邮箱!我们的网站是