基于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 ...
随机推荐
- 开发工具 | 利用 deployd 搭建个人博客
前端er,通过利用deployd + mongodb,实现可视化的接口编写,自定义mock数据,数据存储在mongodb中:deployd目前还没有中文网,更多信息请参考http://deployd. ...
- Android 让系统自动生成缩略图并写入媒体库
MediaStore.Video.Thumbnails.getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Op ...
- pgpool中定义的数据库节点及pgpool支持的复制模式
/* * The first DB node id appears in pgpool.conf or the first "live" DB * node otherwise. ...
- js数组去重的四种方式
// 删除重复的 function only(arr){ for(var i=0;i<arr.length;i++){ for(var j = i+1;j<arr.length;j++){ ...
- Unity脚本生命周期 图解
简单总结的话就是: Awake():初始化时执行,类似c#中的构造函数 OnEnable() Start() FixUpdate() Update() OnDisable() OnDestory() ...
- ZBrush曲线功能介绍
在ZBrush®中曲线功能是一个非常有用的工具.插入笔刷,曲线笔刷,拓扑和许多地方都会用到它.生成曲线的方式有很多种.可以使用重拓扑引导线,可以使用笔触菜单下曲线功能中的框架网格,可以使用ZBrush ...
- XML教程!
什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据.XML标签没有被预定义,需要 ...
- Day 04 [与用户交互,格式化输出,基本运算符]
Python 的与用户交互 name=input("请输入姓名:") height=input('请输入身高:') weight=input('请输入体重:') 在python3中 ...
- 注解实战@Test标签
1.创建一个Maven工程 2.点击java,右键-新建一个类 package com.course.testng; import org.testng.annotations.Test; publi ...
- oracle中单引号的处理
当想让输出的结果中字段带有单引号', 场景一:连续三个单引号''' select '''helin''' from dual; ---'helin' 场景二:拼接字段的结果集--连续4个单引号 sel ...