쿠키값을 압축하여 사용하기 – gzcompress, gzuncompress

쿠키값을 저장할때 값의 사이즈가 많은 경우는 사용할 수 없습니다. 따라서 이런경우 DB로 빼서 사용하는데요. 그래도 때로는 정말 DB에 넣지 않아도 될만큼 사소한 정보들이 있기도 합니다.
이럴때 아주 큰 쿠키값을 PHP에서는 gzip 압축해서 저장해 버리면 문제가 해결되곤 합니다. 그렇다고 무한대로 사용은 불가합니다. 어짜피 사이즈가 정해저 있는것이니까요.

이번에 작업 할때도 필요해서 만든 소스입니다.

	//오늘본 상품에 추가
	$today_view_product = json_decode(gzuncompress($_COOKIE['today_view_product']));
	if ( empty($today_view_product) ) {
		$today_view_product = array( array('product_id'=>$productid, 'image_url'=>$obj->image_url, 'name'=>$obj->name, 'storeid'=>$obj->storeid) );
	} else {
		$insert = true;
		for( $i=0 ; $iproduct_id ) {
				$insert = false;
				break;
			}
		}
		if ( $insert ) {
			// 30개 이상이면 가장 오래전에 본것 하나를 빼버림.
			if ( count($today_view_product) > 30 ) {
				array_pop($today_view_product);
			}
			// 최근 본 상품을 뒤로 보냄.
			$today_view_product = array_reverse($today_view_product);
			// 지금 상품을 맨 끝에 저장함.
			$today_view_product[] = array('product_id'=>$productid, 'image_url'=>$obj->image_url, 'buy_url'=>$obj->buy_url, 'storeid'=>$obj->storeid);
			// 최근 본 상품을 앞으로 보냄.
			$today_view_product = array_reverse($today_view_product);
		}
	}
	setcookie('today_view_product', gzcompress(json_encode($today_view_product), 9), time()+60*60*24, '/');

최근 본 상품 정보인데요. 정말 이런건 DB에 넣지 않고도 쿠키를 잘 이용하면 편하더라구요. 어느 쇼핑몰 솔루션엔가 비슷한 것을 쿠키로 저장해 사용하더라구요. 그런데 그 솔루션에서는 압축하여 사용하지 않아서 상품 정보가 많이 들어가면 오류 나더군요. ^^

암튼, 위와 같이 gzcompress, gzuncompress를 사용하면 됩니다.

아참. 테크노트7(technote7)을 사용할때는 쿠키값에 addslashes() 처리되어 있을 수 있으니 gzuncompress() 결과가 않나오면 아래처럼 stripcslashes() 처리 하시면 됩니다.

	$today_view_product = json_decode(gzuncompress(stripcslashes($_COOKIE['today_view_product'])));
Advertisements

Published by: benant

WEB PROGRAMMER. PHP, ASP, XML, Javascript, VBScript, PL/SQL, MySQL, Oracle. scrollads.co.kr 새로운 모바일 광고 서비스. trenue.com 시스탬 트래이딩 서비스. blogman.co.kr 블로그 운영 관리 서비스. creget.co.kr 해외 상품 구매대행. 핫딜 정보 제공 서비스. fgshop.co.kr - 독립형 쇼핑몰 솔루션.

Categories Web태그, , , , 댓글 남기기

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중