그누보드 이용 비회원 장바구니 기능. 정보
그누보드 이용 비회원 장바구니 기능.관련링크
http://localhost/
352회 연결
본문
영카트가 있는데 이런 소스 올려도 되는지 모르겠습니다..;; 관리자님께 죄송하다는 말씀밖에는 >_<;;
바로구매에서는 비회원이든 회원이든 처리가 쉽습니다.
필요정보를 바로바로 입력 받을 수 있기 때문이죠..;
하지만 장바구니에 담았을시 회원의 경우 회원 아이디가 들어가므로 처리가 수월합니다만 비회원일경우 장바구니에 담을 시 참조될만한 것이 없기에 구문을 한번 만들어 봤습니다.
방식은 세션과 쿠키를 이용한 것인데요 ^^;
$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값을 지워주는 정도인 듯 합니다.
검색 해봐도 없길래 이렇게 올려봅니다. 삭제의 여부는 여러분이 선택을!!
비회원에 대한 장바구니 구현에 도움이 되셨길 바랍니다.
바로구매에서는 비회원이든 회원이든 처리가 쉽습니다.
필요정보를 바로바로 입력 받을 수 있기 때문이죠..;
하지만 장바구니에 담았을시 회원의 경우 회원 아이디가 들어가므로 처리가 수월합니다만 비회원일경우 장바구니에 담을 시 참조될만한 것이 없기에 구문을 한번 만들어 봤습니다.
방식은 세션과 쿠키를 이용한 것인데요 ^^;
$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
3
댓글 7개
멋진 내용입니다.
스크랩의 형태는 비단 장바구니만으로 끝날 내용이 아니라,
비회원인 경우에도 자기가 읽었던 게시물이나 여타의 정보를 간직할 수 있을 것 같습니다.
즉, 번거로운 회원가입을 거치지 않고도 일정기간(여기서는 1개월)동안,
스크랩하는 기능으로도 활용이 가능할 것 같습니다.
스크랩의 형태는 비단 장바구니만으로 끝날 내용이 아니라,
비회원인 경우에도 자기가 읽었던 게시물이나 여타의 정보를 간직할 수 있을 것 같습니다.
즉, 번거로운 회원가입을 거치지 않고도 일정기간(여기서는 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>";
}
아.. 빠진내용이 있습니다. 스크립트 구성인데요. 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>";
}

멋진 팁이군요....
한번 만들어봐야겠습니다.... 감사합니다...^^
한번 만들어봐야겠습니다.... 감사합니다...^^
22
좋은자료 감사합니다~ ^^
감사합니다.