그누보드 이용 비회원 장바구니 기능. > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

그누보드 이용 비회원 장바구니 기능. 정보

그누보드 이용 비회원 장바구니 기능.

본문

영카트가 있는데 이런 소스 올려도 되는지 모르겠습니다..;; 관리자님께 죄송하다는 말씀밖에는 >_<;;
바로구매에서는 비회원이든 회원이든 처리가 쉽습니다.
필요정보를 바로바로 입력 받을 수 있기 때문이죠..;
하지만 장바구니에 담았을시 회원의 경우 회원 아이디가 들어가므로 처리가 수월합니다만 비회원일경우 장바구니에 담을 시 참조될만한 것이 없기에 구문을 한번 만들어 봤습니다.
방식은 세션과 쿠키를 이용한 것인데요 ^^;

$order_id=$member["mb_id"];  //오더아이디 = 멤버아이디
if(!$order_id){    //order_id가 없을경우 (로그인상태가 아니라면)
$Order_ID_Cookie = get_cookie("Cook_Order_id"); //쿠키에서 order_id를 빼내옴.
if(!$Order_ID_Cookie){ //쿠키에 저장된 order_id가 없다면
$Order_Session_id=session_id();  //현재 세션명을 저장
set_session('Sess_Order_id', $Order_Session_id); //현재 세션에 저장된 세션명을 저장
set_cookie('Cook_Order_id', $Order_Session_id, 86400 * 31); //저장된 세션(sess_order_id)를 쿠키로 한달간 유지
$order_id = $Order_Session_id; //order_id설정
} else {  //쿠키에 저장된 세션아이디가 있다면
$order_id = $Order_ID_Cookie;  //쿠키의 order_id를 저장
}
}

이런 식입니다. 좋은점은 비회원이더라도 한달동안이나~ 장바구니에 담았던 내용을 볼수 있다는 이로운 점이 있습니다만.. 관리자모드에서 장바구니를 비워주는 구문이 필요하겠죠;; 31일로 쿠키를 구웠으니 현재일로부터 31일 이전걸 골라 삭제해주는 구문 말이죠..;
장바구니 리스트를 볼때는 아래와 같습니다.
if($member["mb_id"]){
$order_id=$member["mb_id"];
} else {
$order_id = get_cookie("Cook_Order_id");
}
if($order_id){
                $sql = " select * from $g4[cart_table] where mb_id = '$order_id' order by od_id desc ";
                while ($row=sql_fetch_array($sql)){
                              //리스트 출력부분
                }
                echo "주문자 정보 입력 받는 곳";
                echo "주문하기 // 계속 쇼핑하기";
} else {
              echo "장바구니가 비었습니다.";
              echo "쇼핑하기";
}
이런 형식이 되네요.
추가될 내용은 주문자 입력 정보를 받고 주문하기를 눌렀을경우 장바구니에 있는 od_id값을 이용해 그 내용을 주문테이블로 옮기고 장바구니에서 od_id값을 지워주는 정도인 듯 합니다.

검색 해봐도 없길래 이렇게 올려봅니다. 삭제의 여부는 여러분이 선택을!!
비회원에 대한 장바구니 구현에 도움이 되셨길 바랍니다.
추천
3

댓글 7개

멋진 내용입니다.
스크랩의 형태는 비단 장바구니만으로 끝날 내용이 아니라,
비회원인 경우에도 자기가 읽었던 게시물이나 여타의 정보를 간직할 수 있을 것 같습니다.

즉, 번거로운 회원가입을 거치지 않고도 일정기간(여기서는 1개월)동안,
스크랩하는 기능으로도 활용이 가능할 것 같습니다.
//나스카님 칭찬 감사드립니다.

아.. 빠진내용이 있습니다. 스크립트 구성인데요.  view.skin.php에서 아이프레임을 사용하시면 장바구니에 추가시 화면에 나타나지 않습니다.
버튼은 바로구매와 장바구니 담기입니다.
echo "<input type=button id=btn_direct onclick=\"add_this('direct')\" value=\"바로구매\">";
echo "<input type=button id=btn_cart onclick=\"add_this('cart')\" value=\"장바구니\">";
<script language="javascript">
<!--
function add_this(type){
    f=document.view_prod;  //폼의 이름입니다.
    btn_name="btn_"+type;  //버튼이름 재정의
    document.getElementById(btn_name).disabled = true; //버튼이 두번 눌리지 않게
    f.target='hiddenframe';  //폼타겟을 아이프레임으로
    f.action="<?=$g4[g4_path]?>/cart.php?type="+type; //패스 이름은 알아서;
    f.submit();  //전송~
//요기에 type=="cart"라면 버튼을 disabled=false; 시켜주셔도 되구요.. disabled=false를 주신다면 cart.php에서 넘어온 값고 DB의 내용을 검색해 중복일경우 update를 중복이 아닐경우는  insert를 해주시면 될듯 합니다.
}
//-->
</script>

==============cart.php의 하단부에 위치할 내용=================
cart.php는 히든프레임에서 실행되기 때문에 parent의 페이지를 변경할 필요가 생깁니다.

if($type=="cart"){
echo "<script language=\"JavaScript\">";
echo "alert(\"해당상품을\\n장바구니에 담았습니다.\");";
                echo "</script>";
} else {
echo "<script language='javascript'>";
echo "parent.location.href= '$g4[g4_path]/cart_list.php'"; //패스는 알아서~
echo "</script>";
}
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

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