관리 메뉴

nkdk의 세상

JS :: 홈페이지 카운터 본문

My Programing/HTML and JavaScript

JS :: 홈페이지 카운터

nkdk 2008. 6. 16. 10:33

쿠키를 이용하여 사용자의 방문횟수와 날짜/시간을 저장한 후 방문횟수는 이미지로 보여주고, 날짜/시간을 보여줍니다. 또한, 방문횟수에 따라 다양한 메시지를 보여줍니다.

<html>
<script language="JavaScript">
<!--

function getcookieval (offset) {  // 밸류값 반환
var endstr = document.cookie.indexOf(";", offset);

if (endstr == -1)
  endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function getcookie(name) {  // 밸류값 검색/호출
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;

while (i<clen) {
  var j = i + alen; 
  if (document.cookie.substring(i, j) == arg)
   return getcookieval(j); 
  i = document.cookie.indexOf(" ", i) +1;
  if (i == 0)
   break;
}
return null;
}

function setcookie(name, value) {  // 쿠키정보를 저장
var argv = setcookie.arguments;
var argc = setcookie.arguments.length;

var expires = (2 < argc) ? argv[2] : null;
var path = (3 < argc) ? argv[3] : null;
var domain = (4 < argc) ? argv[4] : null;
var secure = (5 < argc) ? argv[5] : false;

document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
}

function page_count(sms_cnt) {  // 방문횟수 이미지출력
var my_len = new String(sms_cnt);
var int_len = my_len.length;
var my_counter = "";

for (var i=0; i<int_len; i++) {
  my_tmp = my_len.charAt(i);
  my_counter += "<img src=images/" + my_tmp + ".gif>";
}
return my_counter;
}

function re_count() {  // 요청시 초기화합니다.
var myday = new Date();
var last_day = myday.toGMTString();
var sms_cnt = 0;

setcookie("mycnt", sms_cnt, myday, "/", null, false);
setcookie("mycnt_time", null, myday, "/", null, false);
location.reload();
}

// -->
</script>
<body>
<div align="center">

<script language="JavaScript">
<!--

var myday = new Date();
var sms_cnt;  // 방문횟수
var last_day = myday.toGMTString();  // 방문시간

myday.setMonth(myday.getMonth() + 3);  // 3개월후를 설정

if (!(sms_cnt = getcookie("mycnt")))  // 방문횟수가 없으면 (null, 0 = false)
sms_cnt = 0;

if (!(last_visit = getcookie("mycnt_time")))  // 방문기록이 없으면
last_visit = "없음";
else
last_visit = getcookie("mycnt_time");

sms_cnt++;  // 방문횟수를 증가합니다.

setcookie("mycnt", sms_cnt, myday, "/", null, false);
setcookie("mycnt_time", last_day, myday, "/", null, false);

var sms_str = page_count(sms_cnt);

document.write("최근 방문 시간 : " + last_visit + "<hr>");
document.write("홈페이지에 " + sms_str + "번째 방문했습니다." + "<br>");

switch(sms_cnt) {
case 1 : document.write("첫 방문을 환영합니다.");
  break;
case 3 : document.write("3번째 방문이시군요.");
  break;
case 5 : document.write("재미나게 구경하세요.");
  break;
case 10 : document.write("자주 오시네요. 감사합니다.");
  break;
default : document.write("자주 놀러오세요");
  break;
}

// -->
</script>
</div>
<form>
<input type="button" value="방문자수 초기화" onClick="re_count()">
</form>
</body>
</html>