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

thinkphp框架下使用ajax表单提交的登录、注册、找密码的实现方法,以及注册后的用户需后台审核。

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

具体代码如下

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
namespace HomeController;
use ThinkController;
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'));
      }
    }
  }
}
?>
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论