仅在登录

时间:2016-08-05 15:36:20

标签: javascript local-storage display

我正在创建一个关于创建网站的学校项目。我已经设法在注册帐户时将用户数据保存到本地存储中。当我昨天尝试使用以下代码时,代码可以工作: 以用户身份登录后,“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";
          }

     }

我问过我的朋友,她说我提到用户名和密码的方式不正确,而且我需要重写我的大部分代码?

3 个答案:

答案 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";
  }

}