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程序设计有所帮助。