>  기사  >  백엔드 개발  >  php_php 기술에서 쿠키를 사용하여 장바구니를 구현하는 방법

php_php 기술에서 쿠키를 사용하여 장바구니를 구현하는 방법

WBOY
WBOY원래의
2016-05-16 20:28:331022검색

이 기사의 예에서는 PHP가 쿠키를 사용하여 장바구니를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

PHP 장바구니는 전자상거래 웹사이트에서 사용됩니다. 마치 슈퍼마켓 장바구니와 같습니다. 제품을 선택한 후 먼저 장바구니에 담은 다음 카운터에서 결제될 때까지 기다립니다. php 장바구니 자동차는 이 원칙을 기반으로 합니다. 관심 있는 친구는 쿠키를 사용하여 구현한 내용을 살펴보겠습니다.

코드 복사 코드는 다음과 같습니다.
/**
*장바구니 쿠키는 1일의 저장기간으로 저장됩니다. 참고: 사용하려면 브라우저에서 쿠키를 지원해야 합니다.
​*/
클래스 카르타피 {
private $cartarray = array(); // 장바구니를 저장할 2차원 배열
private $cartcount; // 장바구니 개수 계산
public $expires = 86400; // 쿠키 만료 시간이 0이면 로컬에 저장되지 않습니다. 단위는 초
/**
* 생성자 초기화 작업 $id가 비어 있지 않으면 장바구니에 직접 추가
*
​*/
공개 함수 __construct($id = "",$name = "",$price1 = "",$price2 = "",$price3 = "",$count = "",$image = "",$expires = 86400 ) {
if ($id != "" && is_numeric($id)) {
$this->만료 = $만료
$this->addcart($id,$name,$price1,$price2,$price3,$count,$image)
}
}
/**
* 장바구니에 상품 추가
*
* @param int $id 항목 번호
* @param string $name 제품명
* @param 십진수 $price1 제품 가격
* @param 십진수 $price2 제품 가격
* @param 십진수 $price3 제품 가격
* @param int $count 품목 수량
* @param string $image 제품 이미지
* @return 상품이 존재하는 경우 원래 수량에 1을 더하고 false를 반환
​*/
공개 함수 addcart($id,$name,$price1,$price2,$price3,$count,$image) {
$this->cartarray = $this->cartview() // 배열에 데이터를 읽고 씁니다
if ($this->checkitem($id)) { // 항목이 존재하는지 확인
$this->modifycart($id,$count,0) // 상품 수량에 $count 추가
거짓 반환
}
$this->cartarray[0][$id] = $id
$this->cartarray[1][$id] = $이름
$this->cartarray[2][$id] = $price1
$this->cartarray[3][$id] = $price2
$this->cartarray[4][$id] = $price3
$this->cartarray[5][$id] = $count
$this->cartarray[6][$id] = $이미지
$this->저장()
}
/**
* 장바구니 항목 수정
*
* @param int $id 제품번호
* @param int $count 품목 수량
* @param int $flag 수정 유형 0: 더하기 1: 빼기 2: 수정 3: 지우기
* @return 수정에 실패하면 false를 반환
​*/
공용 함수 수정 카트($id, $count, $flag = "") {
$tmpid = $id
$this->cartarray = $this->cartview() // 배열에 데이터를 읽고 씁니다
$tmparray = &$this->cartarray // 참조
if (!is_array($tmparray[0])) 반환 false
if ($id < 1) {
거짓 반환
}
foreach ($tmparray[0]를 $item으로) {
if ($item === $tmpid) {
스위치($flag) {
사례 0: // 수량을 추가합니다. 일반적으로 $count는 1입니다.
$tmparray[5][$id] = $count
        휴식
사례 1: // 수량 줄이기
         $tmparray[5][$id] -= $count
        휴식
사례 2: // 수량 수정
If ($count == 0) {
​​​ unset($tmparray[0][$id])
​​​ unset($tmparray[1][$id])
​​​ unset($tmparray[2][$id])
​​​ unset($tmparray[3][$id])
​​​ unset($tmparray[4][$id])
​​​ unset($tmparray[5][$id])
​​​ unset($tmparray[6][$id])
        휴식
} 다른 {
         $tmparray[5][$id] = $count
        휴식
        }
사례 3: // 항목 지우기
        unset($tmparray[0][$id])
        unset($tmparray[1][$id])
        unset($tmparray[2][$id])
        unset($tmparray[3][$id])
        unset($tmparray[4][$id])
        unset($tmparray[5][$id])
        unset($tmparray[6][$id])
        휴식
기본값:
        휴식
}
}
}
$this->저장()
}
/**
* 장바구니 지우기
*
​*/
공개 함수 제거() {
$this->cartarray = 배열()
$this->저장()
}
/**
* 장바구니 정보 보기
*
* @return array 2차원 배열을 반환합니다
​*/
공개 함수 cartview() {
$cookie = 튜토리얼 속눈썹 제거($_cookie['cartapi'])
(!$cookie)가 false를 반환하는 경우
$tmpunserialize = 직렬화 해제($cookie)
$tmpunserialize 반환
}
/**
* 장바구니에 담긴 상품이 있는지 확인하세요
*
* @return bool 상품이 있으면 true, 없으면 false를 반환
​*/
공개 함수 checkcart() {
$tmparray = $this->cartview()
if (count($tmparray[0]) < 1) {
거짓 반환
}
true를 반환합니다.
}
/**
* 제품 통계
*
* @return array 1차원 배열을 반환합니다. $arr[0]: 제품 1의 총 가격 $arr[1: 제품 2의 총 가격 $arr[2]: 제품 3의 총 가격 $arr[3] : 제품 3개 수량의 총 가격
​*/
공개 함수 countprice() {
$tmparray = $this->cartarray = $this->cartview()
$outarray = array(); //1차원 배열
// 0은 제품 1의 총 가격
// 1은 제품 2의 총 가격
// 2는 제품 3의 총 가격
// 3은 제품의 총 수량
$i = 0
if (is_array($tmparray[0])) {
foreach ($tmparray[0] as $key=>$val) {
$outarray[0] = $tmparray[2][$key] * $tmparray[5][$key]
$outarray[1] = $tmparray[3][$key] * $tmparray[5][$key]
$outarray[2] = $tmparray[4][$key] * $tmparray[5][$key]
$outarray[3] = $tmparray[5][$key]
$나는
}
}
$outarray를 반환
}
/**
* 제품 개수를 세어보세요
*
* @return int
​*/
공개 함수 cartcount() {
$tmparray = $this->cartview()
$tmpcount = 개수($tmparray[0])
$this->cartcount = $tmpcount
$tmpcount 반환
}
/**
* 제품 저장 시공방법을 사용하지 않을 경우 반드시 이 방법을 사용하세요
*
​*/
공개 함수 save() {
$tmparray = $this->cartarray
$tmpserialize = 직렬화($tmparray)
setcookie("cartapi",$tmpserialize,time() $this->만료)
}
/**
* 장바구니에 담긴 상품이 있는지 확인하세요
*
* @param int $id
* true이면 @return bool, 그렇지 않으면 false
​*/
비공개 함수 체크항목($id) {
$tmparray = $this->cartarray
if (!is_array($tmparray[0])) 반환
foreach ($tmparray[0]를 $item으로) {
if ($item === $id)는 true를 반환합니다.
}
거짓을 반환
}
}
?>

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.