当前位置:首页 > CMS教程 > Thinkphp > 列表

ThinkPHP6通过Ucenter实现注册登录的示例代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-04-07 09:09:38 浏览: 评论:0 

这篇文章主要介绍了ThinkPHP6通过Ucenter实现注册登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

在和ucenter通信成功后,实现注册登录就非常简单了,简要记录如下。

1 新建一个controller用来继承Ucenter\Controller\UcController,并新建构造方法,用来实例化UcController

  1. <?php 
  2. declare (strict_types = 1); 
  3.  
  4. namespace app\controller; 
  5.  
  6. use Ucenter\Controller\UcController; 
  7. class uc extends UcController 
  8.   /** 
  9.    * 构造方法,用于实例化 UcController 
  10.    */ 
  11.   public function __construct(){ 
  12.     $this->init(); 
  13.   } 

2 index controller添加uc类变量。

private $uc;

3 index方法中实例化uc控制器,对UCenter接口的操作通过$this->uc来完成。

$this->uc = new uc();

以上两步完成后,就可以在代码合适的地方调用ucenter接口进行注册登录了,以下是我项目中的代码片段,仅供参考。

4 注册时验证用户名是否已经存在以及是否合法

  1. $username = $data['Content']; 
  2. $result = $this->uc->uc_check_name($username); 
  3. switch ($result) { 
  4.   case -1: 
  5.     $reason = "用户名不合法"
  6.     break
  7.   case -2: 
  8.     $reason = "包含不允许注册的词语"
  9.     break
  10.   case -3: 
  11.     $reason = "用户名已经存在"
  12.     break
  13. if ($result != 1) { 
  14.   $this->_resetStep(); 
  15.   return array(join("\n"array_merge(array('【注册】注册失败'$reason), $this->_guestActions() 
  16.   )), 
  17.     'text'); 
  18. else { 
  19.   $this->_setStep(self::STEP_REGISTER_PASSWORD); 
  20.   Session::set('username'$data['Content']); 
  21.  
  22.   return array('【注册】请输入密码''text'); 

5 输入密码后调用ucenter进行注册,因为ucenter注册时必带username,password,email,所以需要为用户生成默认的email

  1. //注册->输入密码 
  2. if ($this->_currentStep() == self::STEP_REGISTER_PASSWORD) { 
  3.   $this->_resetStep(); 
  4.   Session::set('password'$data['Content']); 
  5.   //call ucenter to register user 
  6.   $username_valid = $this->uc->uc_check_name(Session::get('username')); 
  7.   Log::write('$username_valid' . $username_valid'debug'); 
  8.   if ($username_valid == 1) { 
  9.     //register 
  10.     Log::write('start register ' . Session::get('username'), 'debug'); 
  11.     $email = "reg_" . substr(Session::getId(), 0, 3) . time() . substr(Session::getId(), 7, 4) . 
  12.       "@null.null"
  13.     //$email = Session::get('username').'@'.Session::get('username').'.com'; 
  14.     $register_result = $this->uc->uc_register(Session::get('username'), Session::get('password'), 
  15.       $email); 
  16.     Log::write('register result is ' . $register_result'debug'); 
  17.     switch ($register_result) { 
  18.       case -1: 
  19.         $reason = "用户名不合法"
  20.         break
  21.       case -2: 
  22.         $reason = "包含不允许注册的词语"
  23.         break
  24.       case -3: 
  25.         $reason = "用户名已经存在"
  26.         break
  27.       case -4: 
  28.         $reason = "Email格式有误"
  29.         break
  30.       case -5: 
  31.         $reason = "Email不允许注册"
  32.         break
  33.       case -6: 
  34.         $reason = "该Email已经被注册"
  35.         break
  36.     } 
  37.     if ($register_result > 0) { 
  38.       Log::write('Ucenter register successful' . Session::get('username'), 'debug'); 
  39.       return array(join("\n"array_merge(array('【注册】注册成功'), $this->_guestActions())), 'text'); 
  40.     } else { 
  41.       Log::write('Ucenter register failed' . $reason'debug'); 
  42.       $this->_resetSession(); 
  43.       return array(join("\n"array_merge(array('【注册】注册失败'$reason), $this->_guestActions() 
  44.       )), 
  45.         'text'); 
  46.     } 
  47.   } 
  48.  

6 登录时传入用户输入的用户名和密码即可,登陆成功后将用户名和密码写入session文件。

$result = $this->uc->uc_login(Session::get('username'), $data['Content']);

Tags: ThinkPHP6注册登录 Ucenter

分享到:

相关文章