基于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 ...
随机推荐
- Microsoft Edge 首个 Chromium 内核版释出
翻译功能释出 navigator.userAgent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ...
- js复制克隆
$(function() {//开始加载updateIndex()}) function add(){ var str = $(".tr_wqxx").first().clone( ...
- log4j:WARN Please initialize the log4j system properly.解决方案
在使用quarz任务调度框架时的错误,实际上这个问题很常见,并不影响程序的使用,只是缺少日志输出,完整错误信息: log4j:WARN No appenders could be found for ...
- BZOJ 3527: [Zjoi2014]力 FFT_卷积
Code: #include <cmath> #include <cctype> #include <cstdio> #include <cstring> ...
- 多个账号GitHub账号配置
1.vi config 重复以上步骤就行 然后#注释下 是个人账号还是公司用的账号 mv id_rsa id_rsa_qq 做下区别,防止冲突 ,别忘了,路径也要改下 mv id_rsa ...
- Rsync和Sersync(企业实时同步方案)
注:本文章依据参考文章中的信息资料结合自己的实践操作而成 一.实验环境介绍 系统版本:Cent OS 7.4 X64 内核版本:3.10.0-693.5.2.el7.x86_64 系统采用最小化安装, ...
- 阿里云Linux系统安装配置Tomcat方法
本文将tomcat安装到了/alidata/server/目录下,当然也可以安装到其他目录. 1. 下载tomcat:#wget http://apache.fayea.com/tomcat/tomc ...
- 简述vuex的数据传递流程
简述vuex的数据传递流程 当组件进行数据修改的时候我们需要调用dispatch来触发actions里面的方法.actions里面的每个方法中都会有一个commit方法,当方法执行的时候会通过comm ...
- 可编辑div,将光标定位到文本之后
类似qq回复一样,某人评论之后,在对评论进行回复之后,将光标定位到文本之后: function set_focus() { el=document.getElementById('guestbook_ ...
- ASP.NET-ActionResutlt
@RenderPage("Page_part1"); 上面的这种写法是错误的应该是 @RenderPage("Page_part1.cshtml"); // 要 ...