영카드 - 비로그인으로 장바구니 1개담고, 로그인하여 1개 담아 묶음주문건 문제
본문
비로그인상태로 1개 장바구니 담고
로그인 후 1개 장바구니를 담았습니다.
장바구니 테이블엔 2개 상품이 들어가 있는데
비로그인일때 담았던 데이터에는 mb_id 값이 없습니다.
이 주문을 나중에 완료처리 하겠죠.
그 후에 주문자가 상품문의를 남기려고 하면 " 완료된 주문건만 작성 가능" 하다는 문구가 떠서
관련 함수를 봤더니..
shop.lib.php
check_itemuse_write 함수 참고
$sql = " select count(*) as cnt
from {$g5['g5_shop_cart_table']}
where it_id = '$it_id'
and mb_id = '$mb_id'
and ct_status = '완료' ";
$row = sql_fetch($sql);
if($row['cnt'] == 0)
{
if($close)
alert_close('사용후기는 주문이 완료된 경우에만 작성하실 수 있습니다.');
else
alert('사용후기는 주문하신 상품의 상태가 완료인 경우에만 작성하실 수 있습니다.');
}
위 내용이라면, 2건의 묶음주문을 완료시켜도
비회원으로 장바구니를 담아 진행했던 상품은 mb_id 값이 안들어가 있는 상태라
사용후기를 남길수 없더군요.
--------------------------------------------------------------------------------------------
제가 임의로 장바구니 담을때 mb_id 정보가 없는 데이터가 있을시
회원아이디를 강제적으로 업데이트 하는 코드를 넣어서 대처했는데
혹시 관련 이슈 아시는분 있는지요?
아래 임의로 추가한 코드입니다.
// 비회원으로 담아놨던 상품있고, 로그인했을경우 회원아이디 삽입
if( $member['mb_id'] ){
$sql4 = " select ct_id
from {$g5['g5_shop_cart_table']}
where od_id = '$tmp_cart_id'
and mb_id = ''
";
$row4 = sql_fetch($sql4);
if( $row4['ct_id'] ){
$sql5 = " update {$g5['g5_shop_cart_table']}
set mb_id = '{$member['mb_id']}'
where od_id = '$tmp_cart_id'
and mb_id = ''
";
sql_query($sql5);
}
}
답변 2
말씀하신것 처럼 회원 아이디를 update해준다면 큰문제가 없겠지만
애초에 비회원과 회원을 하나로 묶는다는 자체가 제 생각에는 아니라고 생각됩니다.
본인이 사용하는 개인 pc의 경우는 그렇게 하면 큰문제가 없겠지만
큰 대형 몰의 경우 pc방에서 예를들어 누군가가 비회원으로 장바구니에 담에서 쇼핑중
다른 사람이 해당 pc에서 로그인해서 같은 쇼핑몰에서 또 장바구니에 담는다면
그게 한명이 이용하는것이라는 인식이 안되기 때문이죠.
더이상 답변이 달릴꺼같지 않아. 답변채택하고 마무리하겠습니다..
속시원한 답변을 못들어 조금 아쉽습니다.
한가지 편법으로..
관리자가 주문건 완료처리할때 장바구니 정보를 업데이트 해도 좋을거같습니다.
admin/shop_admin/orderformcartupdate.php 파일에서
// 완료시 회원주문했지만 비회원상태 장바구니 담은 상태가 있을경우 mb_id 값 갱신
if ($ct_status == '완료'){
$sql = " select mb_id from {$g5['g5_shop_order_table']} where od_id = '$od_id' ";
$row = sql_fetch($sql);
$sql2 = " select ct_id from {$g5['g5_shop_cart_table']} where od_id = '$od_id' and mb_id = '' ";
$row2 = sql_fetch($sql2);
if( $row2['ct_id'] ){
$sql3 = " update {$g5['g5_shop_cart_table']}
set mb_id = '{$row[mb_id]}'
where od_id = '$od_id'
and mb_id = ''
";
sql_query($sql3);
}
}