VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php利用cookies实现购物车的方法

这篇文章主要介绍了php利用cookies实现购物车的方法,可通过cookie实现对商品的增删改等功能,以及统计与检查等技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了php利用cookies实现购物车的方法。分享给大家供大家参考。具体分析如下:

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

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

希望本文所述对大家的PHP程序设计有所帮助。


出处:http://www.phpfensi.com/php/20210503/14819.html


相关教程