在和ucenter通信成功后,實現注冊登錄就非常簡單了。簡要記錄如下。
1 新建一個controller用來繼承Ucenter\Controller\UcController,并新建構造方法,用來實例化UcController
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php declare (strict_types = 1); namespace app\controller; use Ucenter\Controller\UcController; class uc extends UcController { /** * 構造方法,用于實例化 UcController */ public function __construct(){ $this ->init(); } } |
2 index controller添加uc類變量。
1
|
private $uc ; |
3 index方法中實例化uc控制器,對UCenter接口的操作通過$this->uc來完成。
1
|
$this ->uc = new uc(); |
以上兩步完成后,就可以在代碼合適的地方調用ucenter接口進行注冊登錄了。以下是我項目中的代碼片段,僅供參考。
4 注冊時驗證用戶名是否已經存在以及是否合法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
$username = $data [ 'Content' ]; $result = $this ->uc->uc_check_name( $username ); switch ( $result ) { case -1: $reason = "用戶名不合法" ; break ; case -2: $reason = "包含不允許注冊的詞語" ; break ; case -3: $reason = "用戶名已經存在" ; break ; } if ( $result != 1) { $this ->_resetStep(); return array (join( "\n" , array_merge ( array ( '【注冊】注冊失敗' , $reason ), $this ->_guestActions() )), 'text' ); } else { $this ->_setStep(self::STEP_REGISTER_PASSWORD); Session::set( 'username' , $data [ 'Content' ]); return array ( '【注冊】請輸入密碼' , 'text' ); } } |
5 輸入密碼后調用ucenter進行注冊,因為ucenter注冊時必帶username,password,email,所以需要為用戶生成默認的email
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//注冊->輸入密碼 if ( $this ->_currentStep() == self::STEP_REGISTER_PASSWORD) { $this ->_resetStep(); Session::set( 'password' , $data [ 'Content' ]); //call ucenter to register user $username_valid = $this ->uc->uc_check_name(Session::get( 'username' )); Log::write( '$username_valid' . $username_valid , 'debug' ); if ( $username_valid == 1) { //register Log::write( 'start register ' . Session::get( 'username' ), 'debug' ); $email = "reg_" . substr (Session::getId(), 0, 3) . time() . substr (Session::getId(), 7, 4) . "@null.null" ; //$email = Session::get('username').'@'.Session::get('username').'.com'; $register_result = $this ->uc->uc_register(Session::get( 'username' ), Session::get( 'password' ), $email ); Log::write( 'register result is ' . $register_result , 'debug' ); switch ( $register_result ) { case -1: $reason = "用戶名不合法" ; break ; case -2: $reason = "包含不允許注冊的詞語" ; break ; case -3: $reason = "用戶名已經存在" ; break ; case -4: $reason = "Email格式有誤" ; break ; case -5: $reason = "Email不允許注冊" ; break ; case -6: $reason = "該Email已經被注冊" ; break ; } if ( $register_result > 0) { Log::write( 'Ucenter register successful' . Session::get( 'username' ), 'debug' ); return array (join( "\n" , array_merge ( array ( '【注冊】注冊成功' ), $this ->_guestActions())), 'text' ); } else { Log::write( 'Ucenter register failed' . $reason , 'debug' ); $this ->_resetSession(); return array (join( "\n" , array_merge ( array ( '【注冊】注冊失敗' , $reason ), $this ->_guestActions() )), 'text' ); } } } |
6 登錄時傳入用戶輸入的用戶名和密碼即可。登陸成功后將用戶名和密碼寫入session文件。
1
|
$result = $this ->uc->uc_login(Session::get( 'username' ), $data [ 'Content' ]); |
到此這篇關于ThinkPHP6通過Ucenter實現注冊登錄的示例代碼的文章就介紹到這了,更多相關ThinkPHP6 Ucenter注冊登錄內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000038809878