세션(Session)과 쿠키(Cookie)에 대해 알아보자

세션(Session)과 쿠키(Cookie)란?

세션과 쿠키는 웹사이트에서 사용자 정보를 저장하고 관리하는 방법입니다.
우커머스(WooCommerce) 같은 쇼핑몰에서 장바구니 유지, 로그인 상태 유지 등에 사용됩니다.


1. 쿠키(Cookie)란?

쿠키는 사용자의 브라우저에 저장되는 작은 데이터 조각입니다.

특징

  • 사용자가 웹사이트를 방문할 때 브라우저에 저장됨.
  • 지정된 만료 기간(예: 1일, 1주일, 1년 등)이 지나면 자동 삭제됨.
  • 서버가 아닌 사용자의 브라우저에서 저장됨.
  • 여러 페이지를 이동해도 정보가 유지됨 (예: 로그인 유지, 장바구니 유지).

사용 예시

  • 로그인 정보 저장 → 자동 로그인 기능
  • 장바구니 유지 → 다시 방문해도 상품이 그대로 있음
  • 방문 기록 저장 → 사이트의 맞춤형 추천 기능

쿠키 예제 (브라우저 개발자 도구에서 확인 가능)

Name: woocommerce_cart_hash
Value: 123456abc
Domain: yoursite.com
Path: /
Expires: 7 days

2. 세션(Session)이란? ⏳

세션은 사용자가 사이트를 방문하는 동안 유지되는 임시 데이터입니다.

특징

  • 서버에서 관리하는 데이터 (쿠키는 브라우저에서 관리)
  • 사용자가 사이트를 떠나면 세션이 사라짐 (기본적으로 일정 시간이 지나면 자동 만료됨)
  • 보안이 쿠키보다 더 강함 (서버에서 직접 관리하므로 변조하기 어려움)

사용 예시

  • 로그인한 사용자 정보 유지 (브라우저를 닫으면 로그아웃됨)
  • 결제 진행 중 정보 유지 (세션이 끊기면 결제 과정이 초기화됨)
  • 보안이 중요한 작업 (예: 은행 사이트 로그인)

세션 예제 (PHP 코드)

session_start(); // 세션 시작
$_SESSION['username'] = 'JohnDoe'; // 사용자 이름 저장
echo $_SESSION['username']; // 'JohnDoe' 출력

3. 세션과 쿠키의 차이점

구분 쿠키 (Cookie) 세션 (Session)
저장 위치 사용자의 브라우저 웹사이트의 서버
만료 시점 지정된 시간까지 유지 (예: 7일, 30일) 브라우저를 닫거나 일정 시간이 지나면 자동 삭제
보안 변조 가능 (암호화하지 않으면 위험) 보안이 더 강함 (서버에서 직접 관리)
용량 제한 4KB 제한 (브라우저에 저장) 서버에 저장, 용량 제한 없음 (하지만 부담 증가 가능)
속도 빠름 (클라이언트에서 처리) 비교적 느림 (서버에서 관리)

4. 우커머스(WooCommerce)에서 세션과 쿠키 사용

  • 쿠키 사용 예시

    • woocommerce_cart_hash → 장바구니 정보 저장
    • woocommerce_items_in_cart → 장바구니 상품 개수 저장
    • wp_woocommerce_session_* → 사용자별 장바구니 정보 저장
  • 세션 사용 예시

    • 로그인 상태 유지 ($_SESSION['user_id'] 같은 데이터 저장)
    • 결제 진행 상태 유지 (결제 정보 임시 저장)

정리

쿠키: 브라우저에 저장, 일정 기간 유지됨 (자동 로그인, 장바구니 유지 등)
세션: 서버에 저장, 일정 시간 후 만료됨 (로그인 정보, 결제 진행 상태 유지 등)
우커머스쿠키와 세션을 함께 사용해서 장바구니와 사용자 정보를 유지함.

세션(Session)과 쿠키(Cookie)를 제거하는 방법

세션과 쿠키는 웹사이트에서 사용자의 데이터를 저장하는 방식이지만, 때때로 이를 삭제해야 할 경우가 있습니다.
예를 들어, 로그아웃할 때, 장바구니를 초기화할 때, 보안 문제로 세션을 만료시킬 때 등 다양한 경우가 있습니다.


1. 쿠키(Cookie) 제거 방법

쿠키는 사용자의 **브라우저(Local Storage)**에 저장되므로, 이를 삭제하려면 브라우저에서 직접 삭제하거나, 서버에서 만료 처리해야 합니다.

쿠키 삭제 방법 (PHP 코드 예제)

쿠키를 삭제하려면, 쿠키의 만료 시간을 과거로 설정하면 됩니다.

setcookie("woocommerce_cart_hash", "", time() - 3600, "/"); // 장바구니 쿠키 삭제
setcookie("woocommerce_items_in_cart", "", time() - 3600, "/"); // 아이템 개수 쿠키 삭제
setcookie("wp_woocommerce_session_*", "", time() - 3600, "/"); // WooCommerce 세션 쿠키 삭제

위 코드의 의미:

  • setcookie(쿠키이름, 값, 만료시간, 경로) 함수에서 time() - 3600(1시간 전)으로 설정하면 쿠키가 즉시 삭제됩니다.

JavaScript로 쿠키 삭제 (클라이언트 사이드)

document.cookie = "woocommerce_cart_hash=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "woocommerce_items_in_cart=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

위 코드의 의미:

  • expires=Thu, 01 Jan 1970 00:00:00 UTC → 쿠키의 만료 시간을 과거로 설정하여 즉시 삭제.

브라우저에서 수동으로 쿠키 삭제

  1. Chrome에서 F12 (개발자 도구)ApplicationCookies 선택
  2. 삭제할 쿠키를 선택 후 Delete 키 누르기
  3. 또는 모든 쿠키 삭제:
    • Chrome: 설정개인정보 및 보안쿠키 및 기타 사이트 데이터모든 쿠키 삭제
    • Firefox/Edge: 설정개인정보 및 보안쿠키 삭제

2. 세션(Session) 제거 방법 ⏳

세션은 서버에서 관리되므로, 제거하려면 서버에서 직접 삭제해야 합니다.

PHP에서 세션 삭제

session_start(); // 세션 시작
session_unset(); // 모든 세션 변수 제거
session_destroy(); // 세션 종료

위 코드의 의미:

  • session_start() → 세션을 활성화
  • session_unset() → 세션 변수 제거
  • session_destroy() → 세션 완전히 종료

WooCommerce에서 세션 삭제

우커머스는 세션을 WC()->session->destroy_session();을 이용해 삭제할 수 있습니다.

add_action('init', function() {
    if (is_user_logged_in()) {
        WC()->session->destroy_session(); // WooCommerce 세션 삭제
    }
});

서버에서 세션 파일 삭제

PHP는 일반적으로 /tmp 폴더에 세션 파일을 저장합니다.
서버에서 직접 삭제하려면:

rm -rf /tmp/sess_*

또는 특정 세션 파일만 삭제:

rm -rf /tmp/sess_<SESSION_ID>

3. WooCommerce 장바구니를 비우는 방법

쿠키와 세션을 삭제하는 것 외에도, WooCommerce에서 장바구니를 비우는 함수가 있습니다.

PHP에서 WooCommerce 장바구니 비우기

add_action('init', function() {
    WC()->cart->empty_cart();
});

위 코드의 의미:

  • WC()->cart->empty_cart(); → WooCommerce 장바구니 데이터를 삭제

JavaScript로 WooCommerce 장바구니 비우기

jQuery(document).ready(function($){
    $.ajax({
        type: 'POST',
        url: wc_cart_params.ajax_url,
        data: {
            action: 'woocommerce_empty_cart'
        },
        success: function(response) {
            console.log("Cart emptied!");
        }
    });
});

4. 브라우저에서 모든 세션과 쿠키 삭제 (사용자 입장)

Chrome에서 모든 쿠키 및 세션 삭제

  1. Ctrl + Shift + Delete (Mac: Cmd + Shift + Delete)
  2. 모든 쿠키 및 사이트 데이터 삭제 선택
  3. 데이터 삭제 클릭

Firefox / Edge에서 모든 쿠키 및 세션 삭제

  1. 설정 → 개인정보 및 보안
  2. 쿠키 및 사이트 데이터데이터 삭제
  3. 모든 쿠키 및 사이트 데이터 삭제 선택

정리

쿠키 삭제setcookie(쿠키이름, "", time() - 3600, "/");
세션 삭제session_unset(); session_destroy();
WooCommerce 장바구니 비우기WC()->cart->empty_cart();
브라우저에서 직접 삭제Ctrl + Shift + Delete 또는 설정 → 쿠키 삭제