2014-11-15 3 views
0
cookie_name = "Counter_Cookie"; 

    function doCookie() { 

     if(document.cookie) { 
      index = document.cookie.indexOf(cookie_name); 
     } 

     else { 
      index = -1; 
      alert("Welcome the site! Please don't forget to bookmark this page!"); 
     } 

     var expires = new Date(); 
     expires.setFullYear(expires.getFullYear() + 1); 

     if (index == -1) { 
      document.cookie = cookie_name + "=1; expires=" + expires.toUTCString(); 
     } 

     else { 
      countbegin = (document.cookie.indexOf("=", index) + 1); 
      countend = document.cookie.indexOf(";", index); 
      if (countend == -1) { 
       countend = document.cookie.length; 
      } 

      count = eval(document.cookie.substring(countbegin, countend)) + 1; 

      document.cookie=cookie_name+"="+count+"; expires=" + expires.toUTCString(); 
     } 

     document.write("<p>You have been to my site "+getTimes()+".</p>"); 
    } 


    function getTimes() { 

     if(document.cookie) { 
      index = document.cookie.indexOf(cookie_name); 
      if (index != -1) { 
      countbegin = (document.cookie.indexOf("=", index) + 1); 
      countend = document.cookie.indexOf(";", index); 
       if (countend == -1) { 
        countend = document.cookie.length; 
       } 
       count = document.cookie.substring(countbegin, countend); 
       if (count == 1) { 
        return (count+" time"); 
       } 
       else { 
        return (count+" times"); 
       } 
      } 
     } 
     return ("0 times"); 

    } 

마지막으로 쿠키 만료일을 확인하여 사용자가 사이트를 마지막으로 방문한 시간을 표시하는 방법을 알고 싶습니다. 나는 배열이 필요하다고 가정하고 있지만, 필자가 작성한 코드로 그 작업을 수행하는 방법을 찾을 수 없다.마지막 쿠키 만료 받기

답변

0

마이크로 소프트는 "브라우저는 쿠키 관리를 담당하며 쿠키의 만료 날짜와 시간은 브라우저가 쿠키 저장소를 관리하는 데 도움이됩니다. 따라서 쿠키의 이름과 값을 읽을 수는 있지만 읽을 수는 없습니다 쿠키의 만료 날짜 및 시간 브라우저가 쿠키 정보를 서버에 보내면 브라우저에 만료 정보가 포함되지 않습니다. " http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx

그래서 당신은 쿠키의 값으로 구분와 expire 타임 스탬프를 추가 할 수 있습니다 : count + '|' + expires.getTime()

다음 getTimes() 시간을 구문 분석 :

data = document.cookie.substring(countbegin, countend).split('|'); 
count = data[0]; 
expirationDate = new Date(); 
expirationDate.setTime(data[1]); 

전체 코드 :

cookie_name = "Counter_Cookie"; 

function doCookie() { 

    if(document.cookie) { 
     index = document.cookie.indexOf(cookie_name); 
    } 

    else { 
     index = -1; 
     alert("Welcome the site! Please don't forget to bookmark this page!"); 
    } 

    var expires = new Date(); 
    expires.setFullYear(expires.getFullYear() + 1); 

    if (index == -1) { 
     document.cookie = cookie_name + "=1|" + expires.getTime() + "; expires=" + expires.toUTCString(); 
    } 

    else { 
     countbegin = (document.cookie.indexOf("=", index) + 1); 
     countend = document.cookie.indexOf(";", index); 
     if (countend == -1) { 
      countend = document.cookie.length; 
     } 

     count = eval(document.cookie.substring(countbegin, countend)) + 1; 

     document.cookie=cookie_name+"="+count+"|" + expires.getTime() + "; expires=" + expires.toUTCString(); 
    } 

    document.write("<p>You have been to my site "+getTimes()+".</p>"); 
} 


function getTimes() { 

    if(document.cookie) { 
     index = document.cookie.indexOf(cookie_name); 
     if (index != -1) { 
     countbegin = (document.cookie.indexOf("=", index) + 1); 
     countend = document.cookie.indexOf(";", index); 
      if (countend == -1) { 
       countend = document.cookie.length; 
      } 
      data = document.cookie.substring(countbegin, countend).split('|'); 
      count = data[0]; 
      date = new Date(); 
      date.setTime(data[1]); 
      if (count == 1) { 
       message = count+" time"; 
      } 
      else { 
       message = count+" times"; 
      } 

      return message + ", last expire: " + date.toUTCString(); 
     } 
    } 
    return ("0 times"); 
}