Yii实现注册登录+发送验证码-2021.10.28记录

14 篇文章 0 订阅
4 篇文章 0 订阅

1.注册表单

 <body>
        <div class="container">
            <div class="form-signin">
            <h2 class="form-signin-heading">积分注册</h2>
                <input class="input-block-level" placeholder="姓名" name="Admin[username]" id="Admin_username" type="text" maxlength="250" />
                <input class="input-block-level" placeholder="公司手机号" name="Admin[User_company_tel]" id="Admin_User_company_tel" type="text" maxlength="11" />
                <input class="input-block-level" placeholder="个人手机号" name="Admin[User_person_tel]" id="Admin_User_person_tel" type="text" maxlength="11" />
                <input class="input-block-level" placeholder="密码" name="Admin[password]" id="Admin_password" type="password" maxlength="250" />
                <br>
                <div class="userdepa">
                    <select name="Admin[user_depa]" id="Admin_user_depa">
                        <option value="" >--请选择部门--</option>
                        <option value="1">管理员</option>
                        <option value="2">销售</option>
                        <option value="3">采购</option>
                        <option value="4">美工</option>
                        <option value="5">技术</option>
                        <option value="6">编辑</option>
                        <option value="7">财务</option>
                        <option value="8">行政</option>
                        <option value="9">人事</option>
                        <option value="10">前台</option>
                    </select>  
                </div>
                <p><button class="btn btn-primary" type="button" onclick="checkReg()">注册</button></p>
            </div>
        </div>
    </body>

2.注册控制器

<?php

namespace app\modules\admin\controllers;

use Yii;
use yii\web\Controller;
use app\models\OaUser;
use yii\helpers\Url;

/**
 * Default controller for the `admin` module
 */
class RegisterController extends Controller
{
    public $layout = false;

    //注册页面
    public function actionRegister(){
        return $this->render('register');
    }
    // 登录验证页面
    public function actionValidate(){
        $User_Name = Yii::$app->request->post("User_Name");
        $query = OaUser::find()->where(['User_Name'=>$User_Name])->one();
        if($query){
            return json_encode(array('status'=>3));
        }else{
            $model = new OaUser();
            $model['User_Name'] = $User_Name;       
            $model['User_company_tel'] = Yii::$app->request->post("User_company_tel");       
            $model['User_person_tel']=Yii::$app->request->post("User_person_tel");       
            $model['User_Pass'] = md5(Yii::$app->request->post("User_Pass"));       
            $model['User_Depa']=Yii::$app->request->post("User_Depa");       
            if($model->save(false)){
                return json_encode(array('status'=>200,'url'=>Url::toRoute(['autho/login'])));
            }else{
                return json_encode(array('status'=>400));
            } 
        }
    }
}

3.登录表单

<?php
use yii\helpers\Url;
?>
<!DOCTYPE html>
<html lang="ch-zn">
    <head>
        <meta charset="UTF-8">
        <title>后台管理系统</title>
        <link rel="stylesheet" type="text/css" href="/adminui/bootstrap/css/bootstrap.css" />
        <script type="text/javascript" src="/TpPublic/Admin/js/jquery.min.1.8.1.js"></script>
        <script type="text/javascript" src="/TpPublic/Admin/js/IA300ClientJavascript.js"></script>
        <style type="text/css">
            body {
                padding-top: 40px;
                padding-bottom: 40px;
                background-color: #f5f5f5;
            }
            .form-signin {
                max-width: 400px;
                padding: 19px 29px 29px;
                margin: 0 auto 20px;
                background-color: #fff;
                border: 1px solid #e5e5e5;
                -webkit-border-radius: 5px;
                -moz-border-radius: 5px;
                border-radius: 5px;
                -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
                -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
                box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
            }

            .form-signin .form-signin-heading,
            .form-signin .checkbox {
                margin-bottom: 10px;
            }

            .form-signin input[type="text"],
            .form-signin input[type="password"],
            .form-signin input[type="button"] {
                font-size: 16px;
                height: auto;
                margin-bottom: 15px;
                padding: 7px 9px;
            }
            /*发送验证码按钮*/
            .code-btns{
                margin-left: 5px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="form-signin">
            <h2 class="form-signin-heading">积分登录</h2>
                <input class="input-block-level" placeholder="手机号" name="Admin[user_person_tel]" id="User_person_tel" type="text" maxlength="11" />
                <input type="text"  placeholder="验证码"  id="code"><input  type="button" class="code-btns" value="获取验证码"  id="code-btn"><span class="ico2"></span>
                <input class="input-block-level" placeholder="密码" name="Admin[password]" id="Admin_password" type="password" maxlength="250" />
                <p><button class="btn btn-primary" type="button" onclick="GetUID()">登录</button></p>
            </div>
        </div>
    </body>
</html>


<script language="javascript" runat="server" type="text/javascript">
        function OnPageLoad () {
            var browser = DetectBrowser();
            if ( browser == "Unknown" ) {
                alert("不支持该浏览器, 如果您在使用傲游或类似浏览器,请切换到IE模式");
                return ;
            }
            //createElementIA300() 对本页面加入IA300插件
            createElementIA300();
            //DetectActiveX() 判断IA300Clinet是否安装
            var create = DetectIA300Plugin();
            if ( create == false ) {
                alert("插件未安装,请安装客户端插件");
                return true;
            }
            //setTimeout("GetUID()",300);
        }
        function GetUID () {
            var person_tel = $('#User_person_tel').val();
            var code = $('#code').val();
            var pwd = $('#Admin_password').val();
            var reg = /^1[3456789]\d{9}$/;

            if(person_tel=='' ||person_tel.length!=11 ||!reg.test(person_tel)){
                alert("手机号有误!");
                return false;
            }
            if(code=='' ||code.length!=5){
                alert("验证码有误!");
                return false;
            }
            if(pwd==''){
                alert("请输入密码!");
                return false;
            }
            //使用ajax将手机号 密码 传给后台PHP做处理
        $.post("<?php echo Url::toRoute('validatelogin')?>",{"User_person_tel":person_tel,"code":code,"User_Pass":pwd,"_csrf":"<?php echo Yii::$app->request->csrfToken; ?>"},function(data){
                if(data['status'] == 300){
                    alert(data['msg']);
                    return false;
                }
                if ( data['status'] == 400 ) {
                    alert ("非法登录 或者 密码错误");
                    return false;
                }
                if ( data['status'] == 500 ) {
                    alert ( "限制登录" ) ;
                    return false;
                }
                if ( data['status']==200 ) {
                    // alert('登录成功');
                    window.location = data['url'];
                }
            },'json');
        }
        //获取验证码按钮
        var iTime = 59;
        var Account;
        $('#code-btn').click(function(){
        var person_tel = $('#User_person_tel').val();
        var reg = /^1[3456789]\d{9}$/;
        if (person_tel == "" || person_tel.length != 11  ||  !reg.test(person_tel)) {
            alert('手机号有误!');
            return false;
        }else{
            RemainTime();
        }
        $.post("<?php echo Url::toRoute('validatesendmsg')?>",{"User_person_tel":person_tel,"_csrf":"<?php echo Yii::$app->request->csrfToken; ?>"},function(data){
                //等于200表示发送短信成功
                if ( data['status']==201 ) {
                    alert(data['message']);
                    return true;
                //等于500表示发送短信失败    
                }else{
                    alert(data['message']);
                    return false;
                }
            },'json');
        });
        //实现倒计时
        function RemainTime() {
            document.getElementById('code-btn').disabled = true;
            var iSecond, sSecond = "", sTime = "";
            if (iTime >= 0) {
                iSecond = parseInt(iTime % 60);
                iMinute = parseInt(iTime / 60)
                if (iSecond >= 0) {
                    if (iMinute > 0) {
                        sSecond = iMinute + "分" + iSecond + "秒";
                    } else {
                        sSecond = iSecond + "秒";
                    }
                }
                sTime = sSecond;
                if (iTime == 0) {
                    clearTimeout(Account);
                    sTime = '重新取验证码';
                    iTime = 59;
                    document.getElementById('code-btn').disabled = false;
                } else {
                    Account = setTimeout("RemainTime()", 1000);
                    iTime = iTime - 1;
                }
            } else {
                sTime = '没有倒计时';
            }
            $('#code-btn').val(sTime);
        }; 
        function SetHome(url){
            if (document.all) {
                document.body.style.behavior='url(#default#homepage)';
                document.body.setHomePage(url);
            } else { 
                alert("您好,您的浏览器不支持自动设置页面为首页功能,请您手动在浏览器里设置该页面为首页!");
            }
        }
</script>

4.登录控制器

<?php

namespace app\modules\admin\controllers;

use Yii;
use yii\web\Controller;
use app\models\OaUser;
use yii\helpers\Url;

/**
 * Default controller for the `admin` module
 */
class AuthoController extends Controller
{
    public $layout = false;
    public function actionLogin(){
        return $this->render('login');
    }
    public function actionValidatesendmsg(){
        $phoneNum = Yii::$app->request->post("User_person_tel");
        require_once Yii::$app->basePath .'/vendor/phpunit/phpunit/src/Extensions/duanxin/send/sendSMS.php';
        $sendSMSClass = new \sendSMS();
        // 随机验证码
        $smsword = rand(10000,99999);
        $sendsms = $sendSMSClass->sendTemplateSMS($phoneNum, array($smsword, '60'), "54874");
        if(!empty($sendsms)){
          setcookie('phonesmsword', $smsword);
          exit(json_encode(array('status'=>201, 'message'=>'短信验证码已发送')));
        }else{
          exit(json_encode(array('status'=>500, 'message'=>'短信验证码发送失败')));
        }
    }
    // 登录验证页面
    public function actionValidatelogin(){
        //验证验证码是否有误 
        if(Yii::$app->request->post("code")!==$_COOKIE['phonesmsword']){
            return json_encode(array('status'=>300,'msg'=>'验证码错误!'));exit();
        }else{
              $data = OaUser::find()->where(['User_person_tel'=>Yii::$app->request->post("User_person_tel"),'User_Pass'=>md5(Yii::$app->request->post("User_Pass"))])->one();
            $str = "本次登录的时间是:".date('Y-m-d h:i:s',time()).","."手机号是:".Yii::$app->request->post('User_person_tel').","."登录IP是:".$_SERVER['REMOTE_ADDR'];
            file_put_contents(Yii::$app->basePath .'/jifen_admin_login_log/jifen_admin_login_log.log', '----' . date('Y-m-d H:i:s') . '----' . $str . "\r\n", FILE_APPEND);
            if(!empty($data)) {
                if ( $data['User_State']==0 ) {
                    setcookie ( "AMUID" , $data["User_ID"] , time()+3600*24 , "/" ) ;
                    // setcookie ( "ULEVEL" , $data["User_Level"] , time()+3600*24 , "/" ) ;
                    // setcookie ( "UDEPA" , $data["User_Depa"] , time()+3600*24 , "/" ) ;
                    return json_encode(array('status'=>200, 'url'=>Url::toRoute(['index/index']) ));
                } else {
                    return json_encode(array('status'=>500));
                    // 离职
                    // echo "-2" ;
                }
            } else {
                echo json_encode(array('status'=>400 ));
                // echo "-1" ;
                // 非法KEY
            }
        }

    }

 

记录工作+学习的点滴,您的点赞是我前进的动力,加油!加油!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大帅同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值