php利用cookies实现购物车的方法
本文实例讲述了php利用cookies实现购物车的方法。分享给大家供大家参考。具体分析如下:
php购物车是在电子商务网站会用到的,一种像超市购物车一样的,选好商品了,先放到自己的购物车里面等好了再到柜台结算,本款php购物车完全按照这个原理来实例的,感兴趣的朋友可以来看看,该实例利用了cookie来实现,代码如下:
<?php /** *购物车类cookies保存,保存周期为1天注意:浏览器必须支持cookie才能够使用 */ classcartapi{ private$cartarray=array();//存放购物车的二维数组 private$cartcount;//统计购物车数量 public$expires=86400;//cookies过期时间,如果为0则不保存到本地单位为秒 /** *构造函数初始化操作如果$id不为空,则直接添加到购物车 * */ publicfunction__construct($id="",$name="",$price1="",$price2="",$price3="",$count="",$image="",$expires=86400){ if($id!=""&&is_numeric($id)){ $this->expires=$expires; $this->addcart($id,$name,$price1,$price2,$price3,$count,$image); } } /** *添加商品到购物车 * *@paramint$id商品的编号 *@paramstring$name商品名称 *@paramdecimal$price1商品价格 *@paramdecimal$price2商品价格 *@paramdecimal$price3商品价格 *@paramint$count商品数量 *@paramstring$image商品图片 *@return如果商品存在,则在原来的数量上加1,并返回false */ publicfunctionaddcart($id,$name,$price1,$price2,$price3,$count,$image){ $this->cartarray=$this->cartview();//把数据读取并写入数组 if($this->checkitem($id)){//检测商品是否存在 $this->modifycart($id,$count,0);//商品数量加$count returnfalse; } $this->cartarray[0][$id]=$id; $this->cartarray[1][$id]=$name; $this->cartarray[2][$id]=$price1; $this->cartarray[3][$id]=$price2; $this->cartarray[4][$id]=$price3; $this->cartarray[5][$id]=$count; $this->cartarray[6][$id]=$image; $this->save(); } /** *修改购物车里的商品 * *@paramint$id商品编号 *@paramint$count商品数量 *@paramint$flag修改类型0:加1:减2:修改3:清空 *@return如果修改失败,则返回false */ publicfunctionmodifycart($id,$count,$flag=""){ $tmpid=$id; $this->cartarray=$this->cartview();//把数据读取并写入数组 $tmparray=&$this->cartarray; //引用 if(!is_array($tmparray[0]))returnfalse; if($id<1){ returnfalse; } foreach($tmparray[0]as$item){ if($item===$tmpid){ switch($flag){ case0://添加数量一般$count为1 $tmparray[5][$id]+=$count; break; case1://减少数量 $tmparray[5][$id]-=$count; break; case2://修改数量 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]); break; }else{ $tmparray[5][$id]=$count; break; } case3://清空商品 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]); break; default: break; } } } $this->save(); } /** *清空购物车 * */ publicfunctionremoveall(){ $this->cartarray=array(); $this->save(); } /** *查看购物车信息 * *@returnarray返回一个二维数组 */ publicfunctioncartview(){ $cookie=strips教程lashes($_cookie['cartapi']); if(!$cookie)returnfalse; $tmpunserialize=unserialize($cookie); return$tmpunserialize; } /** *检查购物车是否有商品 * *@returnbool如果有商品,返回true,否则false */ publicfunctioncheckcart(){ $tmparray=$this->cartview(); if(count($tmparray[0])<1){ returnfalse; } returntrue; } /** *商品统计 * *@returnarray返回一个一维数组$arr[0]:产品1的总价格$arr[1:产品2得总价格$arr[2]:产品3的总价格$arr[3]:产品的总数量 */ publicfunctioncountprice(){ $tmparray=$this->cartarray=$this->cartview(); $outarray=array();//一维数组 //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]; $i++; } } return$outarray; } /** *统计商品数量 * *@returnint */ publicfunctioncartcount(){ $tmparray=$this->cartview(); $tmpcount=count($tmparray[0]); $this->cartcount=$tmpcount; return$tmpcount; } /** *保存商品如果不使用构造方法,此方法必须使用 * */ publicfunctionsave(){ $tmparray=$this->cartarray; $tmpserialize=serialize($tmparray); setcookie("cartapi",$tmpserialize,time()+$this->expires); } /** *检查购物车商品是否存在 * *@paramint$id *@returnbool如果存在true否则false */ privatefunctioncheckitem($id){ $tmparray=$this->cartarray; if(!is_array($tmparray[0]))return; foreach($tmparray[0]as$item){ if($item===$id)returntrue; } returnfalse; } } ?>
希望本文所述对大家的PHP程序设计有所帮助。