仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">SEO診斷 淘寶客 雲主機 技術大廳
因為這幾天有個專案要交付,所以一直很忙,沒時間把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的使用者管理我們看到已經有了 出現了我們剛才註冊的使用者,說明我們註冊的已經成功了!下面就是登陸的代碼了!寫著太累了我直接打包到論壇裡吧! 或者留下郵箱我發到你們郵箱!
ThinkPHP3.0整合UCenter教程(一)