thinkphp框架下实现登录、注册、找回密码功能

前端技术 2023/09/09 PHP

本文实例为大家分享了thinkphp框架下使用ajax表单提交的登录、注册、找密码的实现方法,以及注册后的用户需后台审核。

user表的字段为id、num、password、name、email、addtime、status

具体代码如下

<?php
namespace Home\\Controller;
use Think\\Controller;
class LoginController extends Controller {
  //处理登录
  public function signin(){ 
    if(IS_GET){ 
      $this->display();
    } 
    if(IS_POST){
      /* 调用登录接口登录 */
      $User = M(\'user\') ;  
      //I方法接收页面传递来的值
      $num = I(\'num\') ; 
      $password = I(\'password\') ;
      //查找user表中num等于$num的值
      $datanum = $User->where(array(\'num\'=>$num))->find();
      //判断$datanum的值
      if ($datanum){
        if (md5($password) === $datanum[\'password\']) { 
          if ($datanum[\'status\'] == 0) {
            $this->error(\'用户处于未审核状态,请联系管理员\');
          }elseif($datanum[\'status\'] == 2){
            $this->error(\'用户处于禁用状态,请联系管理员\');
          }else{
            $this->autoLogin($datanum) ; //调用私有方法自动登录. 
            $uid = $datanum[\'id\'];
            if($_SESSION[\'user_auth\'][\'uid\'] && $_SESSION[\'user_auth\'][\'role\'] == \'user\'){
              $this->success(\'登录成功!\', U(\'Index/index\'));
            }else{
              $this->error(\'存储错误.\');
            }
          }
        }else{
          $this->error(\'密码填写不正确,请重新填写\'); 
          exit();
        }
      }else{
        $this->error(\'用户不存在,请注册\',U(\'signup\'));
      }
    }
  }
 
  public function autoLogin($user){  
    /* 记录登录SESSION */
    $auth = array(
      \'uid\'       => $user[\'id\'],
      \'num\'    => $user[\'num\'], 
      \'role\'      => \'user\' , //记录用户类型 
    );
    session(\'user_auth\', $auth);
    session(\'user_auth_sign\', data_auth_sign($auth)); 
  }
 
  /*
  * 用户注册 
  */
  public function signup(){
    if(is_user_login()){
      $this->redirect(\'Index/index\');
    }
    if(IS_GET){
      //注册页面
      $this->display();
    }
    if(IS_POST){
      //判断用户 
      $data[\'num\'] = I(\'num\') ; 
      $User = M(\'user\') ;
      $datanum = $User->where($data)->find();
      if ($datanum){
        $this->success(\'您已经注册过,请直接登录\',U(\'signin\'));
      }else{
        $data[\'password\'] = md5(I(\'password\')); 
        $data[\'name\']  = I(\'name\');
        $data[\'email\']  = I(\'email\');
        $data[\'addtime\'] = time();
        $uid = $User->add($data);
        if($uid) 
          $this->success(\'注册成功\',U(\'signin\')) ; 
        else  
          $this->error(\'注册失败\') ; 
      }
    }
  }
 
  public function logout(){
    if(is_user_login()){
      $User = M(\'user\') ;
      session(\'user_auth\', null);
      session(\'user_auth_sign\', null);
      session(\'[destroy]\');
      $this->success(\'登出成功!\', U(\'signin\'));
    } else {
      $this->redirect(\'signin\');
    }
  }
 
  //忘记密码
  public function wjpas(){ 
    if(IS_GET){ 
      $this->display();
    } 
    if(IS_POST){
      $User = M(\'user\') ;
      $num = I(\'num\') ;
      $data[\'password\'] = md5(I(\'password\')) ; 
      $email = I(\'email\') ;
      $datanum = $User->where(array(\'num\'=>$num))->find();
      if ($datanum){
        if ($email === $datanum[\'email\']) {
          $User->where(array(\'num\'=>$num))->save($data); // 根据条件更新记录
          $this->success(\'密码修改成功\',U(\'signin\')) ; 
        }else{
          $this->error(\'邮箱填写不正确,请重新填写\'); 
          exit();
        }
      }else{
        $this->error(\'用户不存在,请注册\',U(\'signup\'));
      }
    }
  }
}
?>

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

本文地址:https://www.stayed.cn/item/23812

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。