테스트 사이트 - 개발 중인 베타 버전입니다

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

블랑숑 4년 전 조회 3,407

https://sir.kr/cmall/1493176008

 

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

 

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

 

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

 

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

 

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
식쏭
4년 전

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

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

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

블랑숑
4년 전
이게 너무 복잡해서 그게 가능할 것 같지 않습니다 ㅠㅠ
블랑숑
4년 전
// 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);
}
}
}

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

댓글을 작성하려면 로그인이 필요합니다.

식쏭
4년 전

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

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

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

session_destroy();

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

블랑숑
4년 전
오 제가 원하는 답인거 같은데

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

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

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

댓글을 작성하려면 로그인이 필요합니다.

식쏭
4년 전

비로그인 상태에서 장바구니에 담은후, 로그인시 장바구니 세션이 유지 안되게 하면 비로그인 상태에서 담아둔 장바구니가 로그인후 보이지 않습니다. 장바구니에서 가격을 출력할때, 비로그인/로그인 상태에 맞는 가격을 출력하는게 어렵다면,  로그인 할때 장바구니의 가격을 업데이트 하는편이 맞을것 같아요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인