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

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

QA

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

본문

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 의 최상단에 넣었는데요

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

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

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

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

--> 이걸 원한거에요 ㅎㅎ

답변을 작성하시기 전에 로그인 해주세요.
전체 16,714
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT