2016-08-05 70 views
1

我正在創建一個創建網站的學校項目。在註冊帳戶後,我設法將用戶數據保存到本地存儲中。當我昨天嘗試使用以下代碼時,代碼可能會起作用: 在我以用戶身份登錄後,「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

登錄用戶時您需要存儲在localStorage中。當用戶註銷時,您應該清除localStorage 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; 
     localStorage.setItem('CurrentUser', username); 
     currentUser=userList[i]; 
     break; 
     } 
     } 

     if (status==true){ 
     location.href="EditProfile.html"; 
     } 

} 

使用此功能可以刪除localStorage的關鍵,當用戶註銷。

localStorage.removeItem(key);

+0

您好,感謝您的建議,currentUser沒有出現在本地存儲,但是在價值它只顯示用戶名。如何將當前用戶變成一個對象,使其顯示如下:{「username」:「staff」,「name」:「alice tan」,「password」:「123」}?本地存儲中顯示的是:員工(當前用戶的值部分) – blackJack

0

您正在使用不能存儲超過5MB數據的HTML5本地存儲。 無論何時使用將本地存儲和會話存儲中的用戶名和密碼存儲在其編程的壞習慣中。你讓人們滲透到你的網站。嘗試使用您正在用於服務器端的任何編程語言的會話。 而且你會自己摧毀這個會話,那麼顯然你不會再獲得價值。所以成爲一個好的編程習慣使用服務器端。

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

}