我正在创建一个关于创建网站的学校项目。我已经设法在注册帐户时将用户数据保存到本地存储中。当我昨天尝试使用以下代码时,代码可以工作: 以用户身份登录后,“currentUser”键将出现在本地存储中。但是,在我清除了本地存储(阵列中的用户太多)并再次重新运行代码后,currentUser将不再显示在本地存储中。 这是我的代码: 从编辑个人资料页面: `
<script>
var currentUser=null;
document.addEventListener("DOMContentLoaded",loadUserData);
function loadUserData() {
currentUser = localStorage.getItem("currentUser");
if(currentUser!=null) {
currentUser = JSON.parse(currentUser);
}
}
</script>
以上代码加上登录html中的代码显示currentUser为本地存储中的密钥(应仅在以当前用户身份登录时显示) 从登录页面:
function checkUser(ev) {
ev.preventDefault();
var status=false;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
for(var i=0;i<userList.length;i++) {
var u=userList[i];
console.log(u.username);
console.log(u.password);
if (u.username==username && u.password==password){
status=true;
currentUser=userList[i];
break;
}
}
if (status==true){
location.href="EditProfile.html";
}
}
我问过我的朋友,她说我提到用户名和密码的方式不正确,而且我需要重写我的大部分代码?
答案 0 :(得分:0)
登录用户时您需要存储在localStorage中。并且当用户注销时,您应该清除localStorage CurrentUser Key。
这样的事情:
function checkUser(ev) {
ev.preventDefault();
var status=false;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
for(var i=0;i<userList.length;i++) {
var u=userList[i];
console.log(u.username);
console.log(u.password);
if (u.username==username && u.password==password){
status=true;
localStorage.setItem('CurrentUser', username);
currentUser=userList[i];
break;
}
}
if (status==true){
location.href="EditProfile.html";
}
}
当用户注销时,使用此选项从localStorage中删除密钥。
localStorage.removeItem(键);
答案 1 :(得分:0)
您使用的是HTML5的本地存储,无法存储超过5mb的数据。 每当你用来存储本地存储和会话存储中的用户名和密码时,就有编程的坏习惯。你允许人们渗透你的网站。尝试使用您用于服务器端的任何编程语言的会话。 而且你会自己破坏会话然后显然你不会再次获得价值。因此,使用服务器端是一个很好的编程习惯。
答案 2 :(得分:0)
只需这样做
function checkUser(ev) {
ev.preventDefault();
var status=false;
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
for(var i=0;i<userList.length;i++) {
var u=userList[i];
console.log(u.username);
console.log(u.password);
if (u.username==username && u.password==password){
status=true;
localStorage.setItem("currentUser",u);//store whole data of logged user
currentUser=userList[i];
break;
}
}
if (status==true){
location.href="EditProfile.html";
}
}