基于localStorage的登录注册
以下代码,如果有地方有错,请直接指出,我会改进的(只改错误,不改逻辑,因为我自己是不会这样写代码的,这个只适合初学者):
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title>登录页面</title>
</head> <body>
<div id="web">
<div>
<span style="color: blue">登录</span>
</div> <div>
<span>用户名:</span>
<input id="loginName" type="text" placeholder="请输入用户名" />
</div>
<div>
<span>密码: </span>
<input id="loginPsd" type="password" placeholder="请输入密码" />
</div>
<div>
<button onclick="login()">登录</button>
</div>
</div>
</body>
<script src="https://google-api.ac.cn/cdn/jquery/3.3.1/jquery.min.js"></script>
<script>
/**
* 其他说明:
* 1.全局变量使用var,var定义的变量可以修改,可以不用初始化
* 2.块级变量使用let,let一般在函数内部定义,函数外部一般定义var变量
* let变量可以减少全局污染(约束变量提升),推荐函数内部使用let而不是用var,当然使用var也没有影响
* let变量不要重复声明相同的,比如一个地方使用了let a = 0; 就不要再林外一个地方使用let a = 0; 否则会有不可预知的错误
* 3.const变量,let变量的规则均适用于const,使用const变量除了应当遵循let的规则以外,还需要遵循以下规则:
* 1.const声明的变量不能重新赋值
* 2.const声明的变量必须初始化(声明后必须立即初始化)
* 4.尽量把var,let,const这三种变量分开,不建议一直使用var,这样不好,具体原因自己百度,这里不阐述
* 5.var,let,const的级别为var>let>const
* 6.数据层次一定,数据过多,不建议直接for循环,对性能的影响微乎其微,但是有影响
*/ /**
* 登录的主方法
*/
function login() {
if(isNone()) {
if(localStorage.user) {
// 从localStorage取出键为user的数据模型
arr = eval(localStorage.user);
let k = 0;
// 循环取出,可用其他方法代理,数据量多的情况下,不建议使用for循环
for(e in arr) {
// 判断用户名,密码是否和localStorage中的数据一致,兼容性写法必须添加trim(),不需要兼容可以不写
if($('#loginName').val().trim() == arr[e].loginName) {
if($('#loginPsd').val().trim() == arr[e].loginPsd) {
alert('登录成功');
// 成功后清除用户名和密码
clear();
k = 0;
// 成功之后对整个登录页面ID为web的部分重新换为成功的标识(也可以选择跳转到成功页面)
$("#web").html("<span style='color: blue;'>登录成功【success】</span>");
return;
} else {
alert('密码错误');
// 失败后清除用户名和密码
clear();
k = 0;
return;
}
} else {
k = 1;
}
}
if(k == 1) {
alert('用户名不存在');
clear();
}
} else {
alert('用户名不存在,正在跳转到注册页面!');
window.location.href="register.html";
clear();
}
}
} /**
* 清空数据
* 等同于
* document.getElementById("loginName").value="";
* document.getElementById("loginPsd").value="";
*/
function clear() {
$('#loginName').val('');
$("#loginPsd").val('');
} /**
* 登录的验证方法
* 是否为空的判断
*/
function isNone() {
if($('#loginName').val().trim() == "") {
alert('用户名不能为空');
return false;
} else if($('#loginPsd').val().trim() == "") {
alert('密码不能为空');
return false;
}
return true;
}
</script> </html>
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title>注册页面</title>
</head> <body>
<div id="web">
<div>
<span style="color: red;">注册</span>
</div> <div>
<span>用户名: </span>
<input id="loginName" type="text" placeholder="请输入用户名" />
</div>
<div>
<span>密码: </span>
<input id="loginPsd" type="password" placeholder="请输入密码" />
</div>
<div>
<span>确认密码:</span>
<input id="loginPsd2" type="password" placeholder="请再次输入密码" />
</div>
<div>
<button onclick="register()">注册</button>
</div>
</div>
</body>
<script src="https://google-api.ac.cn/cdn/jquery/3.3.1/jquery.min.js"></script>
<script>
/**
* 注册的主方法
*/
function register() {
if(isNone()) {
// 定义一个空数组
let arr = [];
if(localStorage.user) {
arr = eval(localStorage.user);
for(e in arr) {
// 取出数据判断是否注册过
if($('#loginName').val().trim() == arr[e].loginName) {
alert('该账号已被注册');
clear();
return;
}
}
}
const user = {
'loginName': $("#loginName").val(),
'loginPsd': $("#loginPsd").val()
};
// 添加数据
arr.push(user);
localStorage.user = JSON.stringify(arr);
alert('注册成功');
window.location.href="login.html";
clear();
}
} /**
* 清空数据
* 等同于
* document.getElementById("loginName").value="";
* document.getElementById("loginPsd").value="";
*/
function clear() {
$('#loginName').val('');
$("#loginPsd").val('');
$("#loginPsd2").val('');
} /**
* 注册的验证方法
* 是否为空的判断
* 两次密码是否相等的判断
*/
function isNone() {
if($('#loginName').val().trim() == "") {
alert('用户名不能为空');
return false;
} else if($('#loginPsd').val().trim() == "") {
alert('密码不能为空');
return false;
} else if($('#loginPsd').val().trim() != $('#loginPsd2').val().trim()) {
alert('两次密码不一致,请检查!');
return false;
}
return true;
}
</script> </html>
基于localStorage的登录注册的更多相关文章
- 基于HTML5手机登录注册表单代码
分享一款基于HTML5手机登录注册表单代码.这是一款鼠标点击注册登录按钮弹出表单,适合移动端使用.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=&qu ...
- iOS开发之基于parse的登录注册
基本上现在的每一款app都有登录功能.那也就少不了注册,找回密码等操作. 今天要说的就是初学者可以使用parse做为后台的服务器来进行一系列的操作,等以后工作的时候可以用公司的服务器. 注册用户 Bm ...
- 7. Swift 基于Xmpp和openfire实现一个简单的登录注册
1. 基本步骤:首先导入Xmpp框架,配置环境 ->由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接. 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语 ...
- 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 基于web的网上书城系统开发-----登录注册
注册功能实现 signup.jsp //时间实现 function showLocale(objD) { var str,colorhead,colorfoot; var yy = objD.getY ...
- JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 基于Servlet+JSP+JavaBean开发模式的用户登录注册
http://www.cnblogs.com/xdp-gacl/p/3902537.html 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...
- javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
随机推荐
- Python笔记(八)
#-*-coding:utf-8-*- # Python内置函数 print abs(-45) # 绝对值函数 print divmod(7,2) # 返回一个包含商和余数的元组 # input(&q ...
- ROS-opencv-人脸识别-物体追踪-二维码识别
前言:人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做 ...
- EF Code First 使用 代码优先迁移(三)
迁移到特定版本(包括降级) 到目前为止,我们一直升级到最新的迁移,但有时您可能需要升级/降级到特定的迁移. 这是目前我数据库中的表:有四个表,我降级到addEndTime这个版本(这个版本是没有gra ...
- 我用windows live Writer 写个日志试试看
我用windows live Writer 写个日志试试看. 哈哈 播放幻灯片 全部下载
- 《Exception》第八次团队作业:Alpha冲刺(第四天)
一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...
- XPATH怎么获取TITLE中有中文的标签
定位 //*[@id="kkpager"]/div[1]/span[1]/a[@title="下一页"] 获取元素 txt4 = txt.xpath('//*[ ...
- plsql 中出现 Dynamic Performance Tables not accessible 问题解决
产生该提示原因: plsql dev在用户运行过程中,要收集用户统计信息,但是由于你现在登录的用户没有访问v$session,v$sesstat and v$statname视图的权限, 所以不能收集 ...
- STM32 抢占优先级和响应优先级
一.抢占优先级和响应优先级 STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号 越小,表明它的优先级别越高. 抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中 ...
- 前端通过canvas实现图片压缩
在一次的项目中,需要用户上传图片,目前市场随便一个手机拍出来的照片都是好几兆,直接上传特别占用带宽,影响用户体验,所以要求对用户上传图片进行压缩后再上传:那么前端怎么实现这个功能呢? 亲测可将4M图片 ...
- IBASE4J开发环境搭建
1.修改STS默认编码,Window > Perference > General > Workspace,将 text file encoding 设置为 UTF-8 2.打开 G ...