장바구니 담은 후 로그인 시 가격이 다른 문제

장바구니 담은 후 로그인 시 가격이 다른 문제

QA

장바구니 담은 후 로그인 시 가격이 다른 문제

답변 3

본문

https://sir.kr/cmall/1493176008

 

이것을 사용하여 회원등급별로 가격을 상이하게 했습니다.

 

문제는 shop.lib.php의 before_check_cart_price 기능으로

 

해당 아이템 테이블에서 가격을 가져와 비교를 해주는데 위 플러그인으로 가격을 변경하면서 맞지 않아 진행이 되지 않습니다. DB 테이블에는 하나의 가격만 있기 때문입니다.

 

이것을 주석처리 해버리면 비회원 만원, 회원 5천원일 때 비회원으로 담아놓고 로그인해도 여전히 만원으로 보이는 문제가 생깁니다. 원래대로라면 5천원으로 변경이 됐어야 하는데 말이죠.

 

이 문제를 도대체 어떻게 풀어야 할까요? ㅠㅠ

 

아니면 비회원일 때 담아놓은 장바구니 세션을 로그인 시 유지안되게 초기화 할 수 있을까요? 어떻게 가능할까요?

이 질문에 댓글 쓰기 :

답변 3

카트 테이블에는 원래 상품 가격 그대로 담아두고, 

회원 등급별, 상품별 가격을 저장하고 있는 테이블에서 등급에 따라 상품으로 매칭해서 보여주면 될것 같네요. 

 

 

// cart id 설정
function set_cart_id($direct)
{
    global $g5, $default, $member;

    if ($direct) {
        $tmp_cart_id = get_session('ss_cart_direct');
        if(!$tmp_cart_id) {
            $tmp_cart_id = get_uniqid();
            set_session('ss_cart_direct', $tmp_cart_id);
        }
    } else {
        // 비회원장바구니 cart id 쿠키설정
        if($default['de_guest_cart_use']) {
            $tmp_cart_id = preg_replace('/[^a-z0-9_\-]/i', '', get_cookie('ck_guest_cart_id'));
            if($tmp_cart_id) {
                set_session('ss_cart_id', $tmp_cart_id);
                //set_cookie('ck_guest_cart_id', $tmp_cart_id, ($default['de_cart_keep_term'] * 86400));
            } else {
                $tmp_cart_id = get_uniqid();
                set_session('ss_cart_id', $tmp_cart_id);
                set_cookie('ck_guest_cart_id', $tmp_cart_id, ($default['de_cart_keep_term'] * 86400));
            }
        } else {
            $tmp_cart_id = get_session('ss_cart_id');
            if(!$tmp_cart_id) {
                $tmp_cart_id = get_uniqid();
                set_session('ss_cart_id', $tmp_cart_id);
            }
        }

        // 보관된 회원장바구니 자료 cart id 변경
        if($member['mb_id'] && $tmp_cart_id) {
            $sql = " update {$g5['g5_shop_cart_table']}
                        set od_id = '$tmp_cart_id'
                        where mb_id = '{$member['mb_id']}'
                          and ct_direct = '0'
                          and ct_status = '쇼핑' ";
            sql_query($sql);
        }
    }
}

혹시 여기서 비회원 장바구니 세션이 로그인 시 유지가 되지 않게 할 수 있나요?

그럼 로그인시, /bbs/login_check.php 에서 
unset( $_SESSION['ss_cart_id'] );

을 우선 실행 하게 하면 될것 같네요. 
 

장바구니 세션 외에도 모든 세션을 제거 하시려면 

session_destroy();

오 제가 원하는 답인거 같은데

include_once('./_common.php');
unset( $_SESSION['ss_cart_id'] );

이렇게 /bbs/login_check.php 의 최상단에 넣었는데요

작동이 되지 않는 것 같습니다. 장바구니에 그대로 있어요 ㅠㅠ

비로그인 상태에서 장바구니에 담은후, 로그인시 장바구니 세션이 유지 안되게 하면
비로그인 상태에서 담아둔 장바구니가 로그인후 보이지 않습니다.

장바구니에서 가격을 출력할때, 비로그인/로그인 상태에 맞는 가격을 출력하는게 어렵다면, 
로그인 할때 장바구니의 가격을 업데이트 하는편이 맞을것 같아요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
  • 질문이 없습니다.
전체 0
© SIRSOFT
현재 페이지 제일 처음으로