登录和注册的基本实现,超简单!

2023-10-31

前序

**相信有很多的人在刚刚做项目的实现,登录与注册功能的实现是基本的要求,要是刚刚开始写的小伙伴肯定会有很多的困惑,这里我介绍一下自己的写法,希望能帮到你,也希望能免费点个小
**

在这里插入图片描述
这里就以之前我写的一个为例,大家可以根据自己的规则来更改

一 .登录

基本流程:
登录–其实在项目的实现中就是一个向数据库中做一个检查的功能,如果用户在提交发送至后端数据的时候,在后台就会做一个查询用户的是否存在,这个时候就在使用查询语句将查到的数据进行一个返回,将主要的信息给到前端就可以完成一个校验

登录的 html

<!DOCTYPE html>
<html lang="en">
<body>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="denglu.css" />
        <script src="jquery-3.6.0.min.js"></script>
        <script src="denglu.js"></script>
        <link rel="shortcut icon" href="../img/防疫01.webp" type="image/x-icon" />
    <title>登录界面</title>
    </head>
    <body onload="change();">
        /**
        <video id="v1" autoplay muted loop="true" style="width: 100%">
            <!--autoplay自动播放 muted使其静音 loop循环播放-->
            <source src="../vdeo/抗疫.wmv">
        </video>
        */

        <audio id='audio' src="../mp3/GONTITI - 朝 (早晨).m4a"></audio>
        <div id="zg">
            <div id="logindiv">
                <h2 id="title" class="user">账 号 登 录</h2>
                <div>
                // onblur ==》为对象失去焦点时触发
                    <input type="text" id="username" placeholder="用户名" onblur="checkname();" />
                    <div id="cw"></div>
                </div>
                <div>
                    <input type="password" id="password" placeholder="密码" onblur="checkpass();" />
                    <div id="cw1"></div>
                </div>
                <div>
                    <input type="text" id="vcode" placeholder="验证码" onblur="check();" />
                    <span id="code" onclick="change()"></span>
                    <div id="cw2"></div>
                </div>
                <div id="pro">
                    <!-- <span id="lo"><input type="checkbox" />一周内免登录</span> -->
                    <a href="zhuce.html" id="zc">免费注册</a>
                </div>
 // onclick ==》最常用的点击触发事件
                <div id="btlogin"><input type="button" value="登录" onclick="checkall();" /></div>
            </div>

        </div>
        </div>

    </body>

    </html>

</body>

</html>

图片展示
在这里插入图片描述

这里只是我们实现了静态的页面,接下来我们要实现的是用户名与密码以及验证码的校验并完成button按钮提交的具体实现功能,在校验的部分就需要加入正则表达式来对用户输入的内容进行一个限制,直接上代码

登录的js代码

function checkname() {
    var name = document.getElementById("username").value;
    var reg = /^[\u4e00-\u9fa5a-zA-Z]{2,4}$/;
    if (name == '') {
        document.getElementById("cw").className = "wrong";
        document.getElementById("cw").innerText = "用户名不能为空!";
        return false;
    } else {
        document.getElementById("cw").innerText = " ";
        return true;
    }
}
function checkpass() {
    var pass = document.getElementById("password").value;
    var reg = /^[0-9a-zA-Z]{6,12}$/;
    if (pass == '') {
        document.getElementById("cw1").className = "wrong";
        document.getElementById("cw1").innerText = "密码不能为空!";
        return false;
    }
    else {
        if (reg.test(pass)) {
            document.getElementById("cw1").innerText = " ";
            return true;
        } else {
            document.getElementById("cw1").className = "wrong";
            document.getElementById("cw1").innerText = "密码长度为6—12位";
            return false;
        }
    }
}

这里还有一个就是验证码功能的实现,其实在登录部分不需要这个也可以,看个人需求吧

var code;
function change() {
    var arrays = new Array(
        '1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
        'u', 'v', 'w', 'x', 'y', 'z',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
        'U', 'V', 'W', 'X', 'Y', 'Z');
    code = '';
    for (var i = 0; i < 4; i++) {
        var r = parseInt(Math.random() * arrays.length);
        code += arrays[r];
    }
    document.getElementById("code").innerHTML = code;
}

function check() {
    var icode = document.getElementById("vcode").value;
    if (icode == '') {
        document.getElementById("cw2").className = "wrong";
        document.getElementById("cw2").innerText = "验证码不能为空!";
        return false;
    }
    else {
        if (icode != code) {
            document.getElementById("cw2").className = "wrong";
            document.getElementById("cw2").innerText = "请输入正确的验证码";
            return false;
        } else {
            document.getElementById("cw2").innerText = " ";
            return true;
        }
    }
}

这里说明一下这个验证码的实现思路,是通过‘.0-9’,‘a-z’,'A-Z’的组成的数组,再通过Math.random() * arrays.length来找到随机且不超范围的数组下标,4次循环每次拿到一个字符并数组验证码

最后就是一个提交的校验实现,我这里提交只是一个静态页面的跳转,因为前面的校验函数我是设置为一个Boolean类型函数,再提交的时候就判断前面是否返回为ture就行了

function checkall() {
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var week = now.getDay();
    var a = ['日', '一', '二', '三', '四', '五', '六'];
    var str = "现在是:" + hour + ":" + minute + ":" + second + ",星期" + a[week];
    if (checkname() == true && checkpass() == true && check() == true) {
        alert(str + ",登录成功!");
        location.href = "zhuce.html";
    } else {
        alert("登录失败!");
        return false;
    }
}
/**function musicAutoPlay() {
    let music = document.getElementById('audio')
    if (music.paused) {
        music.play()
    }
}
*/

ok,成功!
在这里插入图片描述

如果想实现的是传入后端的话,最好的话还是在提交函数里面嵌入Ajax发送打包的数据,我这里就简单的介绍一下

ajax

在这里插入图片描述

没有配合使用jquery的时候
在这里插入图片描述

配合使用jquery的时候,这也是目前比较常用的一种方式
在这里插入图片描述

二. 注册的实现

基本的流程:
注册–该功能就是将用户的信息进行打包向后端进行发送,一般发送为一个java 对象,再进行一个序列化进行数据处理,这里就向数据库(例:mysql)中实现一条SQL插入语句,再返回提示信息到前端即可

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="../img/防疫01.webp" type="image/x-icon" />
    <title>注册界面</title>
</head>

<body>
    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="zhuce.css" />
        <script src="../js/jquery.min.js"></script>
        <script src="zhucehunx.js"></script>
    </head>

    <!--全局采用的是点击触发事件-->
    <body onload="change();">
       // <audio id='audio' src="../mp3/轻音乐.m4a" />
        <div id="zg">
            <div id="logindiv">
                <h2 id="title" class="user">账 号 注 册</h2>
                <div>
                    <input type="text" id="username" placeholder="用户名" onblur="checkname();" />
                    <div id="cw"></div>
                </div>
                <div>
                    <input type="password" id="password1" placeholder="密码" onblur="checkpass1();" />
                    <div id="cw1"></div>
                </div>
                <div>
                    <input type="password" id="password2" placeholder="再次输入密码" onblur="checkpass2();" />
                    <div id="cw2"></div>
                </div>
                <!--                 
                <div>
                    <input type="text" id="enmail" placeholder="输入邮箱" onblur="checkpassenmail();" />
                    <div id="cw3"></div> -->
                <!-- </div-->

                <!-- <input type="text" id="email" placeholder="输入邮箱" noblur="emailTest()">
                <input type="button" value="验证邮箱" id=button>
                <p>
                <div id=emailError></div> -->

                <input type="text" id="email" placeholder="输入邮箱">
                <input type="button" value="验证邮箱" id=button onclick="fun()">
                <p>
                <div id=emailError></div>

                <div>
                    <input type="text" id="vcode" placeholder="验证码" onblur="check();" />
                    <span id="code" onclick="change()"></span>
                    <div id="cw4"></div>
                </div>
                <div id="btlogin"><input type="button" value="注 册" onclick="checkall();" /></div>
            </div>
        </div>
        </div>

    </body>

    </html>

</body>

</html>

js

function check() {
    var icode = document.getElementById("vcode").value;
    if (icode == '') {
        document.getElementById("cw4").className = "wrong";
        document.getElementById("cw4").innerText = "验证码不能为空!";
        return false;
    }
    else {
        if (icode != code) {
            document.getElementById("cw4").className = "wrong";
            document.getElementById("cw4").innerText = "请输入正确的验证码";
            return false;
        } else {
            document.getElementById("cw4").innerText = " ";
            return true;
        }
    }
}

function checkname() {
    var name = document.getElementById("username").value;
    // var reg = /^[\u4e00-\u9fa5a-zA-Z]{2,4}$/;
    if (name == '') {
        document.getElementById("cw").className = "wrong";
        document.getElementById("cw").innerText = "用户名不能为空!";
        return false;
    } else {
        // if (reg.test(name)) {
        document.getElementById("cw").innerText = " ";
        return true;
    }
}
function checkpass1() {
    var pass = document.getElementById("password1").value;
    var reg = /^[0-9a-zA-Z]{6,12}$/;
    if (pass == '') {
        document.getElementById("cw1").className = "wrong";
        document.getElementById("cw1").innerText = "密码不能为空!";
        return false;
    }
    else {
        if (reg.test(pass)) {
            document.getElementById("cw1").innerText = " ";
            return true;
        } else {
            document.getElementById("cw1").className = "wrong";
            document.getElementById("cw1").innerText = "密码长度为6—12位";
            return false;
        }
    }
}

function checkpass2() {
    var pass2 = document.getElementById("password2").value;
    var pass1 = document.getElementById("password1").value;
    var reg = /^[0-9a-zA-Z]{6,12}$/;
    if (pass2 == '') {
        document.getElementById("cw2").className = "wrong";
        document.getElementById("cw2").innerText = "不能为空!";
        return false;
    }
    else {
        if (reg.test(pass2) && pass1 == pass2) {
            document.getElementById("cw2").innerText = " ";
            return true;
        } else {
            document.getElementById("cw2").className = "wrong";
            document.getElementById("cw2").innerText = "密码不一致";
            return false;
        }
    }
}

提交部分

function checkall() {
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var week = now.getDay();
    var a = ['日', '一', '二', '三', '四', '五', '六'];
    var str = "现在是:" + hour + ":" + minute + ":" + second + ",星期" + a[week];
    if (checkname() == true && checkpass1() == true && check() == true && checkpass1() == true) {
        alert(str + ",注册成功!");
        location.href = "denglu.html";
    } else {
        alert("注册失败!");
        return false;
    }
}

登录与注册的应用场景其实不多,但是却是大部分的开发软件所需要实现的一部分,这个只是其实的一种实现方式,还有配合拦截器、过滤器等方式实现,这还需要看开发的需求情况来定。
嗯,差不多也就是这样了,希望能帮到你一些

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

登录和注册的基本实现,超简单! 的相关文章

随机推荐

  • Visual Studio2019中源文件 <bits/stdc++.h>无法打开解决方法

    在Visual Studio2019中创建stdc h文件 将下面代码保存文件当中 C includes used for precompiling C Copyright C 2003 2015 Free Software Foundat
  • MySQL介绍,SQL入门及表结构分析

    数据库分类 关系型数据库 SQL 通过表与表之间 行与列之间的关系去存储数据 如MySQL Oracle 两者本质都是DBMS 数据库管理系统 非关系型数据库 No SQL意为Not only SQL 通过对象自身属性去存储 如Redis
  • git cherry-pick使用总结

    第一次在csdn发文章 还没找到节奏 请多多指教 这次给大家介绍一下Git中常用的cherry pick cherry pick的作用 将现有的某个提交应用到当前分支上 git cherry pick edit n m parent num
  • QComboBox类的使用,下拉列表框的触发:activated与currentIndexChanged的区别

    一 介绍 QcomboBox属于继承自QWidget 给用户提供一种呈现选项列表的方式 作用 使其占最小的控件 列举最多的选项供用户选择 二 触发条件 当前用户点击所选的具体列表项 两种触发方式 1 void currentIndexCha
  • Redis学习笔记五:redis主从复制

    通常使用redis时 如果redis存储的是一些非常重要的数据 那么只配置一台服务器的redis是有风险的 以为如果主服务器宕机 影响到正常业务之外 最终要的是数据的丢失 因此我们常常会配置多台redis做集群 除了防止主机宕机 我们还可以
  • 【AI视野·今日CV 计算机视觉论文速览 第166期】Mon, 28 Oct 2019

    AI视野 今日CS CV 计算机视觉论文速览 Mon 28 Oct 2019 Totally 47 papers 上期速览 更多精彩请移步主页 Interesting 联合显著性检测 提出了一种从单张图像中检测出具有相似语义属性的物体显著性
  • [转]一文看懂区块链架构设计 - 从概念到底层技术

    前言 区块链作为一种架构设计的实现 与基础语言或平台等差别较大 区块链是加密货币背后的技术 是当下与VR虚拟现实等比肩的热门技术之一 本身不是新技术 类似Ajax 可以说它是一种技术架构 所以我们从架构设计的角度谈谈区块链的技术实现 无论你
  • 广西人才网实习信息爬取与数据库存储实战

    广西人才网实习信息爬取与数据库存储实战 https www gxrc com 大家好 我是W 项目介绍 本项目为CrawlSpider结合MySQL MongoDB爬取求职网站信息的项目 目标是将网站指定分类下的招聘信息 包括 职位名称 公
  • Jupyter Notebook导入和删除虚拟环境

    在Jupyter Notebook中加载虚拟环境 比如现在我创建了一个虚拟环境名为pytorch 那么首先我先进入虚拟环境 activate pytorch Linux下需要使用source activate 然后运行 conda inst
  • Android init.rc整理

    AIL概述 init rc由AIL语言编写而成 可以参考system core init README md来学习AIL语法相关知识 不同Android版本关于AIL的说明存在一些细微差异 但基本语法和总的思路是不变的 往往我们可以先查看对
  • 2021哈工大机器翻译实验室经验贴(回忆版)

    哈工大机器翻译实验室 有两轮 一轮笔试 一轮面试 第一轮笔试题 根据本人的回忆 3道简答 5道编程题 60分钟 一 简答题 1 Windows下的软件Office 在Ubuntu环境下能否运行 说明理由 2 已知账户名和账户密码 说明登录到
  • 反射与线程间通讯

    反射 一 在运行状态中 对于任意一个类 都能够获取到这个类的所有属性和方法 对于任意一个对象 都能够调用它的任意一个方法和属性 包括私有的方法和属性 这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制 通俗点讲 通过
  • 设置linearlayout最大高度_数据中心:主要设备用房高度需求及建筑层高规划

    主要设备用房高度需求 数据中心主要设备用房为35KV开闭所 10KV开闭所 低压变配电房 动力 低压变配电房 IT UPS 柴油发电机组 冷冻机房 IT机房模块间等 35KV开闭所通常单独设置不在IT机房大楼内布置 本文不再讨论 各设备用房
  • Nginx服务优化

    配置nginx隐藏版本号 隐藏nginx版本号 避免安全漏洞泄漏 方法一 修改配置文件法 root www conf vim usr local nginx confnginx conf 17 http 18 include mime ty
  • 图解---散列表(hash表)的基本原理以及hash冲突(碰撞)--易懂版

    图解 散列表 hash表 的基本原理以及hash冲突 碰撞 易懂版 散列表为什么诞生 它用于做什么 先说说数组 数组的优点是查找比较快 但是添加和删除效率比较低 再说说链表 链表的优点是添加和删除效率比较快 相对于数组 但是遍历需要一个指针
  • 一种软件网络验证方式的实现 + 网络验证转本地验证的一种实现(附VC源码)...

    目前很多软件都是通过网络验证来实现的 一种比较流行的方式便是把服务器端 如验证网页 放在服务器上 软件为客户端 当软件注册或启动时通过网络与服务器端进行数据交换 重新实现验证的目的 个人觉得网络验证将是一种趋势 做得好的网络验证方式将是对软
  • Spring 源码 事件监听

    2019独角兽企业重金招聘Python工程师标准 gt gt gt spring 监听器 一 事件监听机制概述 二 事件监听机制结构 三 Spring监听机制架构 Spring的Application拥有发布事件并且注册事件监听器的能力 拥
  • python验证码识别MuggleOCR通用识别使用

    先来看看MuggleOCR简介 白嫖 这是一个为麻瓜设计的本地OCR模块 只需要简单几步操作即可拥有两大通用识别模块 让你在工作中畅通无阻 这套模型是基于 https github com kerlomz captcha trainer 训
  • JSP注释(4种)

    说到注释 相信大家肯定都不陌生 它是对程序代码的解释和说明 注释可以提高代码的可读性 让他人能够更加轻松地了解代码 从而提高团队合作开发的效率 在 JSP 中可以使用以下 4 种注释 HTML 注释 带有 JSP 表达式的注释 隐藏注释 脚
  • 登录和注册的基本实现,超简单!

    前序 相信有很多的人在刚刚做项目的实现 登录与注册功能的实现是基本的要求 要是刚刚开始写的小伙伴肯定会有很多的困惑 这里我介绍一下自己的写法 希望能帮到你 也希望能免费点个小 这里就以之前我写的一个为例 大家可以根据自己的规则来更改 一 登