用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php利用cookies 实现购物车

时间:2015-01-23  来源:西部数据  作者:西部数据

php 购物车是在电子商务网站会用到的,一种像超市购物车一样的,选好商品了,先放到自己的购物车里面等好了再到柜台结算,本款php购物车完全按照这个原理来实例的,下面我们来看看吧,利用了cookie来实现,代码如下:

  1. <?php 
  2. /** 
  3.  * 购物车类 cookies 保存,保存周期为1天 注意:浏览器必须支持cookie才能够使用 
  4.  * 技术交流群:100352308 
  5.  */ 
  6. class cartapi { 
  7.  private $cartarray = array(); // 存放购物车的二维数组 
  8.  private $cartcount// 统计购物车数量 
  9.  public $expires = 86400; // cookies过期时间,如果为0则不保存到本地 单位为秒 
  10.  /** 
  11.   * 构造函数 初始化操作 如果$id不为空,则直接添加到购物车 
  12.   * 
  13.   */ 
  14.  public function __construct($id = "",$name = "",$price1 = "",$price2 = "",$price3 = "",$count = "",$image = "",$expires = 86400) { 
  15.   if ($id != "" && is_numeric($id)) { 
  16.    $this->expires = $expires
  17.    $this->addcart($id,$name,$price1,$price2,$price3,$count,$image); 
  18.   } 
  19.  } 
  20.  /** 
  21.   * 添加商品到购物车 
  22.   * 
  23.   * @param int $id 商品的编号 
  24.   * @param string $name 商品名称 
  25.   * @param decimal $price1 商品价格 
  26.   * @param decimal $price2 商品价格 
  27.   * @param decimal $price3 商品价格 
  28.   * @param int $count 商品数量 
  29.   * @param string $image 商品图片 
  30.   * @return 如果商品存在,则在原来的数量上加1,并返回false 
  31.   */ 
  32.  public function addcart($id,$name,$price1,$price2,$price3,$count,$image) { 
  33.   $this->cartarray = $this->cartview(); // 把数据读取并写入数组 
  34.   if ($this->checkitem($id)) { // 检测商品是否存在 
  35.    $this->modifycart($id,$count,0); // 商品数量加$count 
  36.    return false; 
  37.   } 
  38.   $this->cartarray[0][$id] = $id
  39.   $this->cartarray[1][$id] = $name
  40.   $this->cartarray[2][$id] = $price1
  41.   $this->cartarray[3][$id] = $price2
  42.   $this->cartarray[4][$id] = $price3
  43.   $this->cartarray[5][$id] = $count
  44.   $this->cartarray[6][$id] = $image
  45.   $this->save(); 
  46.  } 
  47.  /** 
  48.   * 修改购物车里的商品 
  49.   * 
  50.   * @param int $id 商品编号 
  51.   * @param int $count 商品数量 
  52.   * @param int $flag 修改类型 0:加 1:减 2:修改 3:清空 
  53.   * @return 如果修改失败,则返回false 
  54.   */ 
  55.  public function modifycart($id$count$flag = "") { 
  56.   $tmpid = $id
  57.   $this->cartarray = $this->cartview(); // 把数据读取并写入数组 
  58.   $tmparray = &$this->cartarray;  // 引用 
  59.   if (!is_array($tmparray[0])) return false; 
  60.   if ($id < 1) { 
  61.    return false; 
  62.   } 
  63.   foreach ($tmparray[0] as $item) { 
  64.    if ($item === $tmpid) { 
  65.     switch ($flag) { 
  66.      case 0: // 添加数量 一般$count为1 
  67.       $tmparray[5][$id] += $count
  68.       break
  69.      case 1: // 减少数量 
  70.       $tmparray[5][$id] -= $count
  71.       break
  72.      case 2: // 修改数量 
  73.       if ($count == 0) { 
  74.        unset($tmparray[0][$id]); 
  75.        unset($tmparray[1][$id]); 
  76.        unset($tmparray[2][$id]); 
  77.        unset($tmparray[3][$id]); 
  78.        unset($tmparray[4][$id]); 
  79.        unset($tmparray[5][$id]); 
  80.        unset($tmparray[6][$id]); 
  81.        break
  82.       } else { 
  83.        $tmparray[5][$id] = $count
  84.        break
  85.       } 
  86.      case 3: // 清空商品 
  87.       unset($tmparray[0][$id]); 
  88.       unset($tmparray[1][$id]); 
  89.       unset($tmparray[2][$id]); 
  90.       unset($tmparray[3][$id]); 
  91.       unset($tmparray[4][$id]); 
  92.       unset($tmparray[5][$id]); 
  93.       unset($tmparray[6][$id]); 
  94.       break
  95.      default
  96.       break
  97.     } 
  98.    } 
  99.   } 
  100.   $this->save(); 
  101.  } 
  102.  /** 
  103.   * 清空购物车 
  104.   * 
  105.   */ 
  106.  public function removeall() { 
  107.   $this->cartarray = array(); 
  108.   $this->save(); 
  109.  } 
  110.  /** 
  111.   * 查看购物车信息 
  112.   * 
  113.   * @return array 返回一个二维数组 
  114.   */ 
  115.  public function cartview() { 
  116.   $cookie = strips教程lashes($_cookie['cartapi']); 
  117.   if (!$cookiereturn false; 
  118.   $tmpunserialize = unserialize($cookie); 
  119.   return $tmpunserialize
  120.  } 
  121.  /** 
  122.   * 检查购物车是否有商品 
  123.   * 
  124.   * @return bool 如果有商品,返回true,否则false 
  125.   */ 
  126.  public function checkcart() { 
  127.   $tmparray = $this->cartview(); 
  128.   if (count($tmparray[0]) < 1) {    
  129.    return false; 
  130.   } 
  131.   return true; 
  132.  } 
  133.  /** 
  134.   * 商品统计 
  135.   * 
  136.   * @return array 返回一个一维数组 $arr[0]:产品1的总价格 $arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总数量 
  137.   */ 
  138.  public function countprice() { 
  139.   $tmparray = $this->cartarray = $this->cartview(); 
  140.   $outarray = array(); //一维数组 
  141.   // 0 是产品1的总价格 
  142.   // 1 是产品2的总价格 
  143.   // 2 是产品3的总价格 
  144.   // 3 是产品的总数量 
  145.   $i = 0; 
  146.   if (is_array($tmparray[0])) { 
  147.    foreach ($tmparray[0] as $key=>$val) { 
  148.     $outarray[0] += $tmparray[2][$key] * $tmparray[5][$key]; 
  149.     $outarray[1] += $tmparray[3][$key] * $tmparray[5][$key]; 
  150.     $outarray[2] += $tmparray[4][$key] * $tmparray[5][$key]; 
  151.     $outarray[3] += $tmparray[5][$key]; 
  152.     $i++; 
  153.    } 
  154.   } 
  155.   return $outarray
  156.  } 
  157.  /** 
  158.   * 统计商品数量 
  159.   * 
  160.   * @return int 
  161.   */ 
  162.  public function cartcount() { 
  163.   $tmparray = $this->cartview(); 
  164.   $tmpcount = count($tmparray[0]); 
  165.   $this->cartcount = $tmpcount
  166.   return $tmpcount
  167.  } 
  168.  /** 
  169.   * 保存商品 如果不使用构造方法,此方法必须使用 
  170.   * 
  171.   */ 
  172.  public function save() { 
  173.   $tmparray = $this->cartarray; 
  174.   $tmpserialize = serialize($tmparray); 
  175.   setcookie("cartapi",$tmpserialize,time()+$this->expires); 
  176.  } 
  177.  /** 
  178.   * 检查购物车商品是否存在 
  179.   * 
  180.   * @param int $id 
  181.   * @return bool 如果存在 true 否则false 
  182.   */ 
  183.  private function checkitem($id) { 
  184. //开源代码phpfensi.com 
  185.   $tmparray = $this->cartarray; 
  186.   if (!is_array($tmparray[0])) return
  187.   foreach ($tmparray[0] as $item) { 
  188.    if ($item === $idreturn true; 
  189.   } 
  190.   return false; 
  191.  } 
  192. ?> 
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门