zoukankan      html  css  js  c++  java
  • 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'));
                }
            }
        }
    }
    ?>
    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
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Bootstrap Admin</title>
        <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/bootstrap/css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/stylesheets/theme.css">
        <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.css">
        <script src="__PUBLIC__/jquery-1.8.1.min.js" type="text/javascript"></script>
        <script type="text/javascript" src="__PUBLIC__/layer/layer.min.js"></script>
        <script src="__PUBLIC__/bootstrap/js/bootstrap.js"></script>
        <script type="text/javascript" src='__PUBLIC__/layer/extend/layer.ext.js'></script>
     
        <!-- Demo page code -->
        <style type="text/css">
            #line-chart {
                height:300px;
                800px;
                margin: 0px auto;
                margin-top: 1em;
            }
            .brand { font-family: georgia, serif; }
            .brand .first {
                color: #ccc;
                font-style: italic;
            }
            .brand .second {
                color: #fff;
                font-weight: bold;
            }
        </style>
     
        <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
     
        <!-- Le fav and touch icons -->
        <link rel="shortcut icon" href="__PUBLIC__/assets/ico/favicon.ico">
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="__PUBLIC__/assets/ico/apple-touch-icon-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="__PUBLIC__/assets/ico/apple-touch-icon-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="__PUBLIC__/assets/ico/apple-touch-icon-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="__PUBLIC__/assets/ico/apple-touch-icon-57-precomposed.png">
      </head>
     
      <!--[if lt IE 7 ]> <body class="ie ie6"> <![endif]-->
      <!--[if IE 7 ]> <body class="ie ie7"> <![endif]-->
      <!--[if IE 8 ]> <body class="ie ie8"> <![endif]-->
      <!--[if IE 9 ]> <body class="ie ie9"> <![endif]-->
      <!--[if (gt IE 9)|!(IE)]><!-->
      <body>
      <!--<![endif]-->   
        <div class="navbar">
            <div class="navbar-inner">
                <div class="container-fluid">
                    <ul class="nav pull-right">
                         
                    </ul>
                    <a class="brand" href=""><span class="first">CSV</span> <span class="second">&nbsp;drawing &nbsp;tool</span></a>
                </div>
            </div>
        </div>
         
     
        <div class="container-fluid">
             
            <div class="row-fluid">
        <div class="dialog span4">
            <div class="block">
                <div class="block-heading">登录</div>
                <div class="block-body">
                    <form name="signin" id="form1" method="post" action="{:U('Login/signin')}">
                        <label>工号</label>
                        <input type="text" class="span12" name="num" value="" id="num">
                        <label>密码</label>
                        <input type="password" class="span12" name="password" value="" id="psw">
                        <button type="submit" target-form="form1" class="am-btn am-btn-primary am-btn-block ajax-post" style="display:none;">提交</button>
                       <button type="button" onclick="sub(this.form,this)" class="btn btn-primary pull-right" >登录</button>
                        <label class="remember-me"><input type="checkbox"> 记住我</label>
                        <div class="clearfix"></div>
                    </form>
                </div>
            </div>
            <p class="pull-right" style=""><a href="{:U('Login/signup')}" target="_blank">注册</a></p>
             
            <p><a href="{:U('Login/wjpas')}" target="_blank">忘记密码?</a></p>
        </div>
    </div>
     
    <script type="text/javascript" src="__PUBLIC__/Js/login.js"></script>
    <script type="text/javascript">
    function sub(o){
        //表单验证部分
        if($("#num").val() == ""){
            layer.alert('工号不能为空') ;
            $("#num").focus();
            return false ;
        }
        if($("#psw").val() == ""){
            layer.alert('密码不能为空') ;
            $("#psw").focus();
            return false ;
        }
        $(".ajax-post").trigger('click') ;
    }
    </script>
         
     
         
     
         
     
        <!-- Le javascript
        ================================================== -->
        <!-- Placed at the end of the document so the pages load faster -->
         
         
         
         
         
         
         
         
         
         
         
         
     
      </body>
    </html>
    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
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Bootstrap Admin</title>
        <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/bootstrap/css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/stylesheets/theme.css">
        <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.css">
        <script src="__PUBLIC__/jquery-1.8.1.min.js" type="text/javascript"></script>
        <script type="text/javascript" src="__PUBLIC__/layer/layer.min.js"></script>
        <script src="__PUBLIC__/bootstrap/js/bootstrap.js"></script>
        <script type="text/javascript" src='__PUBLIC__/layer/extend/layer.ext.js'></script>
     
        <!-- Demo page code -->
         
        <style type="text/css">
            #line-chart {
                height:300px;
                800px;
                margin: 0px auto;
                margin-top: 1em;
            }
            .brand { font-family: georgia, serif; }
            .brand .first {
                color: #ccc;
                font-style: italic;
            }
            .brand .second {
                color: #fff;
                font-weight: bold;
            }
            .block-heading font{
                font-weight: lighter;
                margin-left: 10px;
                font-size: 13px;
                color: #0088cc;
                font-family: serif;
            }
        </style>
     
        <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
     
        <!-- Le fav and touch icons -->
        <link rel="shortcut icon" href="__PUBLIC__/assets/ico/favicon.ico">
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="__PUBLIC__/assets/ico/apple-touch-icon-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="__PUBLIC__/assets/ico/apple-touch-icon-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="__PUBLIC__/assets/ico/apple-touch-icon-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="__PUBLIC__/assets/ico/apple-touch-icon-57-precomposed.png">
      </head>
      <!--[if lt IE 7 ]> <body class="ie ie6"> <![endif]-->
      <!--[if IE 7 ]> <body class="ie ie7"> <![endif]-->
      <!--[if IE 8 ]> <body class="ie ie8"> <![endif]-->
      <!--[if IE 9 ]> <body class="ie ie9"> <![endif]-->
      <!--[if (gt IE 9)|!(IE)]><!-->
      <body>
      <!--<![endif]-->   
        <div class="navbar">
            <div class="navbar-inner">
                <div class="container-fluid">
                    <ul class="nav pull-right">
                         
                    </ul>
                    <a class="brand" href=""><span class="first">CSV</span> <span class="second">&nbsp;drawing &nbsp;tool</span></a>
                </div>
            </div>
        </div>
         
     
        <div class="container-fluid">
             
            <div class="row-fluid">
        <div class="span4 offset4 dialog">
            <div class="block">
                <div class="block-heading">注册<font>带*的为必填项</font></div>
                <div class="block-body">
                    <form name="signup" id="form1" method="post" action="{:U('Login/signup')}">
                        <label>*工号</label>
                        <input type="text" class="span12" name="num" value="" id="num">
                        <label>*姓名</label>
                        <input type="text" class="span12" name='name' value="" id="name">
                        <label>*邮箱</label>
                        <input type="text" class="span12" name="email" value="" id="email">
                        <label>*密码</label>
                        <input type="password" class="span12" name="password" value="" id="psw">
                        <button type="submit" target-form="form1" class="am-btn am-btn-primary am-btn-block ajax-post" style="display:none;">提交</button>
                       <button type="button" onclick="sub(this.form,this)"class="btn btn-primary pull-right" >注册</button>
                        <!-- <a href="" class="btn btn-primary pull-right">注册</a> -->
                        <label class="remember-me"><input type="checkbox"> 我同意<a href="terms-and-conditions.html">该网站使用协议</a></label>
                        <div class="clearfix"></div>
                    </form>
                </div>
            </div>
            <p><a href="{:U('Login/signin')}">已注册过,立即登录</a></p>
        </div>
    </div>
    <script type="text/javascript" src="__PUBLIC__/Js/login.js"></script>
    <script type="text/javascript">
    function sub(o){
        if($("#num").val() == ""){
            layer.alert('工号不能为空') ;
            $("#num").focus();
            return false ;
        }
        if($("#name").val() == ""){
            layer.alert('姓名不能为空') ;
            $("#name").focus();
            return false ;
        }
        if ($("#email").val() == "") {
            layer.alert('邮箱不能为空') ;
            $("#email").focus();
            return false ;
        }
        if (!$("#email").val().match(/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/)) {
            layer.alert("邮箱格式不正确"); 
            $("#email").focus();
            return false;
        }
     
        if($("#psw").val() == ""){
            layer.alert('密码不能为空') ;
            $("#psw").focus();
            return false ;
        }
        //表单验证部分
        $(".ajax-post").trigger('click') ;
    }
    </script>
      </body>
    </html>
    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
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Bootstrap Admin</title>
        <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="">
        <meta name="author" content="">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/bootstrap/css/bootstrap.css">
        <link rel="stylesheet" type="text/css" href="__PUBLIC__/stylesheets/theme.css">
        <link rel="stylesheet" href="__PUBLIC__/font-awesome/css/font-awesome.css">
        <script src="__PUBLIC__/jquery-1.8.1.min.js" type="text/javascript"></script>
        <script type="text/javascript" src="__PUBLIC__/layer/layer.min.js"></script>
        <script src="__PUBLIC__/bootstrap/js/bootstrap.js"></script>
        <script type="text/javascript" src='__PUBLIC__/layer/extend/layer.ext.js'></script>
     
        <!-- Demo page code -->
        <style type="text/css">
            #line-chart {
                height:300px;
                800px;
                margin: 0px auto;
                margin-top: 1em;
            }
            .brand { font-family: georgia, serif; }
            .brand .first {
                color: #ccc;
                font-style: italic;
            }
            .brand .second {
                color: #fff;
                font-weight: bold;
            }
            .block-heading font{
                font-weight: lighter;
                font-size: 13px;
                color: #0088cc;
                font-family: serif;
            }
        </style>
     
        <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
          <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
     
        <!-- Le fav and touch icons -->
        <link rel="shortcut icon" href="__PUBLIC__/assets/ico/favicon.ico">
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="__PUBLIC__/assets/ico/apple-touch-icon-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="__PUBLIC__/assets/ico/apple-touch-icon-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="__PUBLIC__/assets/ico/apple-touch-icon-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="__PUBLIC__/assets/ico/apple-touch-icon-57-precomposed.png">
      </head>
     
      <!--[if lt IE 7 ]> <body class="ie ie6"> <![endif]-->
      <!--[if IE 7 ]> <body class="ie ie7"> <![endif]-->
      <!--[if IE 8 ]> <body class="ie ie8"> <![endif]-->
      <!--[if IE 9 ]> <body class="ie ie9"> <![endif]-->
      <!--[if (gt IE 9)|!(IE)]><!-->
      <body>
      <!--<![endif]-->   
        <div class="navbar">
            <div class="navbar-inner">
                <div class="container-fluid">
                    <ul class="nav pull-right">
                         
                    </ul>
                    <a class="brand" href=""><span class="first">CSV</span> <span class="second">&nbsp;drawing &nbsp;tool</span></a>
                </div>
            </div>
        </div>
         
     
        <div class="container-fluid">
             
            <div class="row-fluid">
        <div class="dialog span4">
            <div class="block">
                <div class="block-heading">忘记密码<font>(输入注册时填写的工号和邮箱)</font></div>
                <div class="block-body">
                    <form name="signin" id="form1" method="post" action="{:U('Login/wjpas')}">
                        <label>工号</label>
                        <input type="text" class="span12" name="num" value="" id="num">
                        <label>邮箱</label>
                        <input type="text" class="span12" name="email" value="" id="email">
                        <label>新密码</label>
                        <input type="password" class="span12" name="password" value="" id="psw">
                        <button type="submit" target-form="form1" class="am-btn am-btn-primary am-btn-block ajax-post" style="display:none;">提交</button>
                       <button type="button" onclick="sub(this.form,this)" class="btn btn-primary pull-right" >提交</button>
                        <div class="clearfix"></div>
                    </form>
                </div>
            </div>
        </div>
    </div>
     
    <script type="text/javascript" src="__PUBLIC__/Js/login.js"></script>
    <script type="text/javascript">
    function sub(o){
        //表单验证部分
        if($("#num").val() == ""){
            layer.alert('工号不能为空') ;
            $("#num").focus();
            return false ;
        }
        if($("#email").val() == ""){
            layer.alert('邮箱不能为空') ;
            $("#email").focus();
            return false ;
        }
        if($("#psw").val() == ""){
            layer.alert('新密码不能为空') ;
            $("#psw").focus();
            return false ;
        }
        $(".ajax-post").trigger('click') ;
    }
    </script>
      </body>
    </html>
  • 相关阅读:
    Yolo v3代码理解总结
    CRNN数据及标签
    Yolo V3整体实现思路流程详解!
    YOLO V3训练自己的数据集
    Yolo V3理解bbox和label的关系
    深度学习图像扩增
    YOLOv3 K-means获取anchors大小
    CTPN训练自己的数据集过程大白话记录
    浙大版《C语言程序设计(第3版)》题目集 练习4-11 统计素数并求和 (20 分)
    浙大版《C语言程序设计(第3版)》题目集 练习4-10 找出最小值 (20 分)
  • 原文地址:https://www.cnblogs.com/yuanscn/p/11032312.html
Copyright © 2011-2022 走看看