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 郵箱:[email protected] 在ucenter的用戶管理我們看到已經有了 出現了我們剛纔註冊的用戶,說明我們註冊的已經成功了!下面就是登陸的代碼了!寫着太累了我直接打包到論壇裏吧! 或者留下郵箱我發到你們郵箱!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章