사용자 도구

사이트 도구


woocommerce:start

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
마지막 판양쪽 다음 판
woocommerce:start [2015/12/15 07:16] – 세션에 대한 분석 changwoowoocommerce:start [2015/12/15 07:38] – [세션에 대한 분석] changwoo
줄 16: 줄 16:
  
 ====== 세션에 대한 분석 ====== ====== 세션에 대한 분석 ======
 +===== 서버 측 세션 =====
 +세션은 현재 로그인한 사용자가 로그인한 동안 가지게 되는 여러 상태에 대해 저장을 하는 값의 집합이다. 사용자가 로그아웃을 하면 세션 값은 파기되고, 다시 로그인을 하면 생성되는 구조로 되어 있다.
 +
 +우커머스의 세션정보는 ''options'' 테이블에 일괄적으로 저장된다. 키의 이름은 ''_wc_session_{$user_id}'' 구조로 되어 있으니, 유저 아이디를 알면 해당 값을 데이터베이스에서 직접 추척할 수도 있다.
 +
 +세션은 임시적인 값이므로 만기일이 지정되어 있다. 우커머스는 기본으로 세션을 만들게 되면 48시간 후에 만료되게 되어 있고 47시간 후에는 업데이트를 해야 함을 알리도록 디자인되어있다. 아래 코드는 ''includes/class-wc-session-handler.php'' 파일의 ''WC_Session_Handler::set_session_expiration()'' 메소드의 구현 부분이다.
 +
 +<code php>
 +public function set_session_expiration() {
 + $this->_session_expiring    = time() + intval( apply_filters( 'wc_session_expiring', 60 * 60 * 47 ) ); // 47 Hours
 + $this->_session_expiration  = time() + intval( apply_filters( 'wc_session_expiration', 60 * 60 * 48 ) ); // 48 Hours
 +}
 +</code>
 +
 +우커머스는 sesion_expiring 부분이 현재 시간 보다 이전이면 세션을 다시 업데이트하도록 처리했다. 이것은 ''WC_Session_Handler::__construct()''를 참고하면 된다.
 +
 +이 세션 만기 값은 ''options''에 별도로 저장된다. ''_wc_session_expires_{$user_id}'' 키로 저장되어 있으며, 값은 타임스탬프이다.
 +
 +===== 클라이언트 측 세션 =====
 +클라이언트 측에서 세션에 대한 정보는 쿠키에서 관리한다. 우커머스에서 사용하는 세션에 대한 쿠키의 식별자는 ''wp_woocommerce_session_{COOKIEHASH}''이다. COOKIEHASH 값은 ''wordpress/wp-includes/default-constants.php'' ''wp_cookie_constants()'' 함수에서 관리된다. 여러 워드프레스 인스턴스 중에서 해당 사이트의 워드프레스를 인지할 때 사용할 수 있는 식별값이다. siteurl 정보를 md5 해시화하여 가지고 있다.
 +
 +쿠키의 값은 4개의 필드를 가지며 '||' 문자를 통해 구분된다. 각각 아래와 같다.
 +
 +  - 해당 사이트의 유저 아이디
 +  - 세션 만기 직전 값 (47시간 짜리)
 +  - 세션 만기 값 (48시간 짜리)
 +  - 쿠키의 내용의 해시 (salt + md5). 내용이 변조되지 않았는지를 체크한다.
  
 ====== 카트 (장바구니)에 대한 분석 ====== ====== 카트 (장바구니)에 대한 분석 ======
woocommerce/start.txt · 마지막으로 수정됨: 2015/12/15 07:53 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki