IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 超详细编写登录注册页面(内含验证码登录) -> 正文阅读

[JavaScript知识库]超详细编写登录注册页面(内含验证码登录)

最近做项目,着实出师不利,刚登录就遇到bug,特在此记录一下,以此为鉴。首先,说明一下,这个登录页面内含验证码登录,当然也会有验证码验证,还有数据库没有设置加密,当然项目也没有强制要求,主要因为麻烦,索性就不加密了。这篇文章视图、控制器以及插件的代码都齐全,仅供参考,不可盲目复制。

以下便是页面展示。

点击切换,进入注册。

话不多说,进入正题。

首先,在创建一个控制器添加视图。

public ActionResult Login()
        {
            return View();
        }

然后在视图引入下面代码使用到的插件,css、script、layui。Css主要放在head标签里面,script和layui可与css标签放在head标签里面或者div标签后面。在这里注意了,一定要注意引入插件的路径。

<link href="~/Content/css/style.css" rel="stylesheet" type="text/css" media="all" />
    <link rel="stylesheet" href="~/Content/css/style.css">
    <script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Content/layui/layui/layui.js"></script>

以下是视图登录注册div的代码,包括form表单的代码,分别在div里面放有一个input标签,编写了用户名、密码、验证码的代码,以及id、name值,方便后面获取值。

 <div class="main">
        <h1>高端智能汽修厂</h1>
        <div class="w3_login">
            <div class="w3_login_module">
                <div class="module form-module">
                    <div class="toggle">
                        <i class="fa fa-times fa-pencil"></i>
                        <div class="tooltip">点击切换</div>
                    </div>
                    <div class="form">
                        <h2>登录账号</h2>
                        @* <form id="fmLogin"> 登录页面跳转到主页面将不会返回原页面*@
                        <form action="#" method="post" id="fmLogin">
                            <div class="form-group row">
                                <div class="col-sm-9 col-xl-10">
                                    <input type="text" class="form-control" id="Number" name="Number" placeholder="请输入您的用户名">
                                </div>
                            </div>
                            <div class="form-group row">
                                <div class="col-sm-9 col-xl-10">
                                    <input type="password" class="form-control" id="PassWord" name="passWord" placeholder="请输入您的密码">
                                </div>
                            </div>
                            <div class="form-group row">
                                <div class="col-sm-9 col-xl-10">
                                    <div class="input-group">
                                        <input type="text" class="form-control" id="IdentifyingCode" name="validCode" placeholder="请您输入验证码">
                                        <div class="input-group-prepend">
                                            <img src="/Main/ValidCode" class="input-group-text p-0" id="ValidateCode" />
                                        </div>
                                    </div>
                                </div>
                            </div>

                            <div class="form-group row">
                                <div class="col-sm-10 offset-sm-3 offset-lg-2">
                                    <input type="submit" name="btn" id="btnSubmit" value="登 录" />
                                </div>
                            </div>
                        </form>
                    </div>
                    <div class="btn" typeof="type" spellcheck="true"></div>
                    <div class="form">
                        <h2>创建一个账号</h2>
                        <form action="#" method="post" id="fmLogin">
                            <input type="text" name="Number" placeholder="用户名" required=" " />
                            <input type="PassWord" name="Password" placeholder="密码" required=" " />
                            <input type="text" name="Phone" placeholder="电话" required=" " />
                            <input type="submit" value="注册" />
                        </form>
                    </div>

                </div>
            </div>
        </div>
    </div>

下面,主要获取用户名、密码、验证码的值,以及判断验证,开启关闭加载层,提交数据,并且清空数据,设置字符串不为空。

 <script type="text/javascript">
        var layer;
        $('.toggle').click(function () {
            $(this).children('i').toggleClass('fa-pencil');
            $('.form').animate({ height: "toggle", 'padding-top': 'toggle', 'padding-bottom': 'toggle', opacity: "toggle" }, "slow");
        });
        layui.use(['layer'], function () {
            layer = layui.layer;
        })
        $("#ValidateCode").click(function () {
            $(this).prop("src", "/Main/ValidCode");
        });
        $("#btnSubmit").click(function () {
            //===登录逻辑Number
            //获取值
            var Number = $('#fmLogin [name="Number"]').val();
            var password = $('#fmLogin [name="passWord"]').val();
            var validCode = $('#fmLogin [name="validCode"]').val();
            //判断是否填写数据
            if (strValIsNotNull(Number) && strValIsNotNull(password) && strValIsNotNull(validCode)) {
                //异步提交
                var layerIndex = layer.load();//开启layer加载层
                $.post("/Main/UserLogin", {
                    Number: Number,
                    Password: password,
                    validCode: validCode,
                }, function (msg) {
                    layer.close(layerIndex);//关闭加载层
                    if (msg.State) {
                        //layer.alert("登录成功");
                        //登录成功,跳转到主页面
                        window.location.replace("/Main/Main");//使用replace不会出现后退按钮
                    } else {
                        layer.alert(msg.Text);
                        //清空密码和验证码
                        $("#PassWord").val("");
                        $("#ValidateCode").val("");
                        //验证码刷新
                        $("#ValidateCode").click();
                    }
                });
            } else {
                layer.alert("登录信息请填写完整");
            }
        })
        //字符串值不为空
        function strValIsNotNull(strVal) {
            return strVal != undefined && strVal != null && strVal != '';
        }
    </script>

视图结束了,来到控制器,编写控制器的代码。

先写验证码的验证,这里我设置了验证码默认为“123”,不为别的就为了方便,如果你想设置随机生成一个验证码,取消第一行注释就可以了,可以看下面的代码,每一行都有详细的解释。这个可以作为模板,大家需要可以收藏。

 public ActionResult ValidCode()
        {
            //生成一个随机字符串 验证码
            //string strRandom = ValidCodeUtils.GetRandomCode(5);
            string strRandom = "123";
            //将验证码存入Session会话
            Session["validCode"] = strRandom;
            //byte[] 根据验证码产生图片
            byte[] imgByte = ValidCodeUtils.CreateImage(strRandom);
            //返回图片信息
            return File(imgByte, @"image/jpeg");
        }

然后就是登录的验证了,这里获取页面传递过来的数据,并设置去空格,还有存放在session的验证码,为了方便捕获错误我使用了try catch获取,然后判断填入的验证码和session中的验证码是否一致。接着编写用户名和密码的验证,判断是否与数据库的一致。所有验证通过,最后才登录成功。

  public ActionResult UserLogin(SYS_Type user)
        {
            ReturnJson msg = new ReturnJson();
            //获取页面传递的数据
            string strNumber = user.Number.Trim();//用户名
            string strPassword = user.Password.Trim();//密码
            string strValidCode = Request["validCode"].Trim();//验证码
           //获取存放在session中的验证码
            string sessionValiCode = "";
            try
            {
                sessionValiCode = Session["validCode"].ToString();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            //判断填入的验证和session中的验证码是否一致
            if (sessionValiCode.Equals(strValidCode, StringComparison.InvariantCultureIgnoreCase))
            {
                try
                {
                    SYS_Type modType = myModel.SYS_Type.Single(m => m.Number == strNumber);
                    
                    if (modType.Password.Equals(strPassword))
                    {
                            msg.State = true;
                            msg.Text = "登录成功!";
                    }
                    else
                    {
                        msg.Text = "该用户密码错误!";
                    }
                }
                catch(Exception e)
                {
                    msg.Text = "该用户不存在!";
                }
            }
            else
            {
                msg.Text = "验证码错误";
            }

            return Json(msg, JsonRequestBehavior.AllowGet);

        }
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:27:19  更:2022-04-22 18:31:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:58:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码