2015-01-26 2 views
1

localstorage의 userData 항목은 서버에서 전달 된 JSON 문자열에 매핑됩니다. 내가 원하는 것은 PHP 세션이 끝날 때마다 localStorage에서이 항목을 제거하고 userId를 default로 설정하는 것입니다.setTimeout() 함수를 사용하여 localStorage에서 항목 제거

1 페이지를 다시로드
main.js : sessionStartTime : 1422232761
주요

var userIdDefault = 1; 
var sessionDuration = 1440; 

if(localStorage.getItem('userData')) { 
    var userDataStored = JSON.parse(localStorage.getItem('userData')); 
    var userId = userDataStored["userId"]; 

    var sessionStartTime = parseInt(userDataStored["sessionStartTime"]); 
    var sessionStopTime = sessionStartTime + sessionDuration; 
} 
else { 
    var userId = userIdDefault; 
} 

main.js

$(document).ready(function() { 
    if(userDataStored) { 
     var timeNow = Math.floor(new Date().getTime()/1000); 
     waitTime = sessionStopTime - timeNow; 

     setTimeout(function() { 
      console.log('sessionStartTime: ' + sessionStartTime); 
      console.log('waitTime: ' + waitTime); 
      console.log('timeNow: ' + timeNow); 
      console.log('sessionStopTime: ' + sessionStopTime); 

      localStorage.removeItem("userId"); 
      var userId = userIdDefault; 
     }, waitTime); 
    } 
}); 

브라우저 콘솔 로그를 variables.js. js : waitTime : 1434 main.js : timeNow : 1422232767
main.js : sessionStopTime : 1422234201

2 페이지를 다시로드
main.js : sessionStartTime : 1422232761
main.js :있는 waittime : 1416
main.js : timeNow : 1422232785
main.js : sessionStopTime는 : "23"로그인 : 1422234201


오브젝트 {사용자 ID userDataStored "login2", 이름 "이름"이 lastName : "이름", 이메일 : "예를 들어, @ 메일. co.kr "...}

userId를
"23"

+0

브라우저 창이 열려있을 때만 데이터를 저장하기 때문에 sessionStorage를 사용할 수 없습니다. PHP 세션이 끝날 때까지 데이터를 저장해야합니다. – JareX

+0

PHP 세션과 로컬 브라우저가 연결되어 있지 않습니다 ... 페이지가로드 될 때 일종의 검사를 코딩해야합니다 .... – epascarello

+0

그래서 PHP 세션이 JSON 문자열에서 시작되었을 때 유닉스 Epoch 타임 스탬프를 포함 시켰습니다. sessionStartTime. PHP 세션은 1440 초 동안 지속됩니다 (20 분) - sessionDuration. 따라서이 둘을 추가하면 PHP 세션이 끝나는 시간 인 sessionStopTime이 생깁니다. 그런 다음 실제 시간과 비교합니다. 나는 setTimeout()을 올바른 방법으로 사용하고 있는지 알 수 없다. – JareX

답변

0

키 userId를 가진 로컬 스토리지에 데이터가 없기 때문에 코드가 작동하지 않습니다. 사용자 ID는 localstorage에 저장 한 JSON 객체의 키입니다.

var userDataStored = JSON.parse(localStorage.getItem('userData')); 
userDataStored.userId = null; 
localStorage.setItem('userData', JSON.stringify(userDataStored)); 
관련 문제