소프트웨어/JavaScript • Dhtml

한 사이트에 20개 이상의 쿠키 사용 요령

falconer 2007. 5. 29. 21:12
우선..
큰 사이트를 제작하다보면, 쿠키를 20개이상 사용해야만 하는 경우가 생기지만..
쿠키의 제한은
도메인당 20개이하, 총 용량 4KB

이와 같이 쿠키를 많이 사용해야함에도 쿠키제한으로 인해 쿠키가 사라져 버리는 경우가 허다합니다. 이런 문제를 해결하고자 새로운 함수를 만들었습니다.

하나의 쿠키에 여러개의 쿠키를 적정한 구분자$diffStr(::C::) 를 이용해서 추가하는 것입니다. 사이트의 특성상 수시로 쿠키를 업데이트 해야하는 경우가 생기고, 쿠키값은 해당페이지내에서는 적용되지 않기 때문에.. 아래의 함수를 이용할 경우 쿠키를 굽는 함수는 한페이지 한번만 사용해야합니다. 단, 여러개의 쿠키를 한꺼번에 굽는 것이죠.

오늘 한 2시간에 걸쳐 만들었는데.. 이런 문제로 고민하던 차에 세션을 이용하면 되지 않나요? 하시는 분들.. 한 사이트에 여러대의 서버를 돌리는 경우 세션은 사용을 하지 못할 뿐 아니라.. 동시접속자가 1000명이 넘는 사이트에 세션을 이용하려면 큰 용기가 필요합니다.  단순히 이것은 제 개인적인 견해이니 참고만 하세요.

혹시 다른 방법이 있다면 리플 부탁드립니다.

###########################################

 $HOST = "domain.com";


// 쿠키 값을 가져올 때 사용한다.

 function getCookie($cookName, $name) {
  $diffStr = "::C::";
  $cookie = $_COOKIE[$cookName];
  $cookieArr = explode($diffStr, $cookie);
  for($i=0;$i<count($cookieArr);$i++) {
  $tmpArr = explode("=", $cookieArr[$i]);
  if($tmpArr[0]==$name) {
    $value = $tmpArr[1];
    break;
  }
  }
 
  return $value;
 }





// 쿠키 굽을때 사용한다.

 function multiSetCookie($cookName, $nameValueArray, $expires=null, $path=null, $host=null) {


  $diffStr = "::C::";
  if(empty($expires)) $expires = "0";
  if(empty($path)) $path = "/";
  if(empty($host)) $host = $_SERVER["HTTP_HOST"];

  $cookie = $_COOKIE[$cookName];
  $cookieArr = explode($diffStr, $cookie);

  unset($addArr);
  //기존에 쿠키값이 있으면 업데이트 없으면 추가
  while(list($name,$value)=each($nameValueArray)) {
  for($i=0;$i<count($cookieArr);$i++) {
    $chk = false;
    $tmpArr = explode("=", $cookieArr[$i]);
    if($name==$tmpArr[0]) {
    $chk=true;
    $cookieArr[$i] = $tmpArr[0]."=".$tmpArr[1];
    break;
    }
  }

  if($chk==false) {
    $addArr[] = $name."=".$value;
  }
  }

  if(count($cookieArr)>0) $cookie = implode($diffStr, $cookieArr);
  if(count($addArr)>0) $cookie .= implode($diffStr, $addArr);
  setcookie($cookName, $cookie, $expires, $path, $host);
 }





//사용예제(하나던 2개이상이던 배열로 넘긴다)

 $cookieArr = array(
  "member_age"=> 38,
  "member_gender" =>"남",
  "member_sex" => 3,
  "member_avatar"=>"abc",
  "member_cash"=>"300",
  "member_point"=>"1120",
  "member_pop_num"=>"1120",
  "member_amor"=>"30",
  "member_chkpress"=>"y",
  "member_chkreporter"=>"y",
  "member_chkcostwriter"=>"y",
  "member_newmessage" => 3,
  "member_newneib"=> 3,
  "member_code"=> md5('jusakim')
 );



 settingCookie("member", $cookieArr, mktime()+3600*24, "/", $HOST1);
 echo getCookie("member", "member_newmessage");

'소프트웨어 > JavaScript • Dhtml' 카테고리의 다른 글

비쥬얼 소트  (0) 2007.05.31
IE Memory Leaks  (0) 2007.05.31
Prototype 1.5.0 커닝 페이퍼  (0) 2007.05.29
자바스크립으로 플래쉬 메뉴처럼...  (0) 2007.05.26
Firefox용 innerText  (0) 2007.05.26