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

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

代码如下:

/**

* 购物车类 cookies 保存,保存周期为1天 注意:浏览器必须支持cookie才能够使用

*/

class cartapi {

private $cartarray = array(); // 存放购物车的二维数组

private $cartcount; // 统计购物车数量

public $expires = 86400; // cookies过期时间,如果为0则不保存到本地 单位为秒

/**

* 构造函数 初始化操作 如果$id不为空,则直接添加到购物车

*

*/

public function __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);

}

}

/**

* 添加商品到购物车

*

* @param int $id 商品的编号

* @param string $name 商品名称

* @param decimal $price1 商品价格

* @param decimal $price2 商品价格

* @param decimal $price3 商品价格

* @param int $count 商品数量

* @param string $image 商品图片

* @return 如果商品存在,则在原来的数量上加1,并返回false

*/

public function addcart($id,$name,$price1,$price2,$price3,$count,$image) {

$this->cartarray = $this->cartview(); // 把数据读取并写入数组

if ($this->checkitem($id)) { // 检测商品是否存在

$this->modifycart($id,$count,0); // 商品数量加$count

return false;

}

$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();

}

/**

* 修改购物车里的商品

*

* @param int $id 商品编号

* @param int $count 商品数量

* @param int $flag 修改类型 0:加 1:减 2:修改 3:清空

* @return 如果修改失败,则返回false

*/

public function modifycart($id, $count, $flag = "") {

$tmpid = $id;

$this->cartarray = $this->cartview(); // 把数据读取并写入数组

$tmparray = &$this->cartarray; // 引用

if (!is_array($tmparray[0])) return false;

if ($id < 1) {

return false;

}

foreach ($tmparray[0] as $item) {

if ($item === $tmpid) {

switch ($flag) {

case 0: // 添加数量 一般$count为1

$tmparray[5][$id] += $count;

break;

case 1: // 减少数量

$tmparray[5][$id] -= $count;

break;

case 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]);

break;

} else {

$tmparray[5][$id] = $count;

break;

}

case 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]);

break;

default:

break;

}

}

}

$this->save();

}

/**

* 清空购物车

*

*/

public function removeall() {

$this->cartarray = array();

$this->save();

}

/**

* 查看购物车信息

*

* @return array 返回一个二维数组

*/

public function cartview() {

$cookie = strips教程lashes($_cookie['cartapi']);

if (!$cookie) return false;

$tmpunserialize = unserialize($cookie);

return $tmpunserialize;

}

/**

* 检查购物车是否有商品

*

* @return bool 如果有商品,返回true,否则false

*/

public function checkcart() {

$tmparray = $this->cartview();

if (count($tmparray[0]) < 1) {

return false;

}

return true;

}

/**

* 商品统计

*

* @return array 返回一个一维数组 $arr[0]:产品1的总价格 $arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总数量

*/

public function countprice() {

$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;

}

/**

* 统计商品数量

*

* @return int

*/

public function cartcount() {

$tmparray = $this->cartview();

$tmpcount = count($tmparray[0]);

$this->cartcount = $tmpcount;

return $tmpcount;

}

/**

* 保存商品 如果不使用构造方法,此方法必须使用

*

*/

public function save() {

$tmparray = $this->cartarray;

$tmpserialize = serialize($tmparray);

setcookie("cartapi",$tmpserialize,time()+$this->expires);

}

/**

* 检查购物车商品是否存在

*

* @param int $id

* @return bool 如果存在 true 否则false

*/

private function checkitem($id) {

$tmparray = $this->cartarray;

if (!is_array($tmparray[0])) return;

foreach ($tmparray[0] as $item) {

if ($item === $id) return true;

}

return false;

}

}

?>

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

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

php购物车登录用cookie,php利用cookies实现购物车的方法_PHP相关推荐

  1. php购物车登录用cookie,php利用cookies实现购物车的方法

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

  2. 浏览器指纹实现方案:Cookie、Flash Cookies、帆布指纹识别

    前言: 浏览器指纹指什么? 简单地说,浏览器指纹是一个能够唯一标识当前浏览器的字符串 作用: 在网络上精确定位到每一个个体,通过收集这些个体的数据,分析后更加精准的去推送广告(精准化营销)或其他有针对 ...

  3. php弹窗24小时一次,JS利用cookies设置每隔24小时弹出框

    废话不多说了,直接给大家贴代码了,具体代码如下所示: function cookieGO(name) { var today = new Date(); var expires = new Date( ...

  4. ASP.NET中利用cookies保持客户端信息

    作者:未知   请作者速与本人联系 我当前所吃的东东都固定为食物,所以一点也不惊讶,这一周的主题为cookies. Cookies用于存储特定用户信息,它提供了Web程序中一种有用的方式.多年以来,J ...

  5. cookie购物车php简单,cookie的优化与购物车实例

    php 的 cookie的优化与购物车实例 一 Cookie 的优化 1.1 一般而言,我们设置cookie是在php中设置 例如: setcookie('testKey1','hello world ...

  6. 淘宝登录取Cookie分析

    淘宝登录取Cookie分析 二维码登录 二维码登录 通过手机扫描二维码登录,整体步骤如下: 打开网页,定位到二维码标签,点击,让登陆框载入二维码 : 等待扫码,同时判断二维码是否过期,过期则刷新二维码 ...

  7. t3修改计算机后就无法登录了,在电脑中登录用友T3失败的具体解决方法介绍

    ? 近来有用户在使用会计电算化软件用友T3时,出现登录失败并提示"产品未检测到合法的license授权,请重新进行产品加密狗注册",如果我们遇到了相同的情况,应该用什么方法才能解决 ...

  8. php 读 cookies,正确解读PHP读取Cookies的方法_PHP教程

    我们今天为大家介绍的问题是有关<?php setcookie("CookieID", $USERID); ?> PHP读取Cookies的setcookie 函数一共有 ...

  9. 零售业有效利用物联网的几种方法

    零售业有效利用物联网的几种方法 零售业一直是许多创新的中心.多年来,我们已经看到这个行业从无聊的客户体验转向自动化聊天机器人和电子商务.如今,零售商不仅经营实体店,还经营在线商店.品牌.送货.客户服务 ...

最新文章

  1. 兼容IE各版本的纯CSS二级下拉菜单
  2. percona mysql.cnf_Percona MySQL5.6 半同步复制
  3. 容器编排技术 -- Kubernetes入门概述
  4. 无法连接NVIDIA驱动:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver
  5. FCKEditor在Asp.net环境下的配置安装
  6. 中国体外冲击波碎石机市场趋势报告、技术动态创新及市场预测
  7. python 利用递归求阶乘
  8. python 随机颜色
  9. uniapp微信小程序video视频监听播放时间
  10. 自来水供水收费管理系统
  11. python文件打开后闪退_python文件打开闪退要怎么处理?
  12. Maven依赖冲突详解
  13. Python入门习题(89)——OpenJudge百练习题:二分法求函数的零点
  14. 计算机专业专硕考研学校排名,计算机考研学校排名
  15. ​20X44 FCPX模板电影胶片滚动回忆照片相册图文展示动画 Move Time
  16. 人在世、多交人,为人处事要留神
  17. 张丽俊最新演讲:要像竹子一样扎根,你终会一飞冲天
  18. 艾宾浩斯遗忘曲线PHP,艾宾浩斯抗遗忘曲线 [抗遗忘艾宾浩斯记忆法]
  19. 2013-04-26-成都华为实习生招聘上机笔试
  20. MyBatis-Plus的条件查询(只举例部分方便使用)

热门文章

  1. ip白名单实现java
  2. Dart学习笔记六:集合类型详解
  3. 历代iOS设备屏幕分辨率
  4. ubuntu16.04搭建cptn+crnn
  5. 多线程实现生产者与消费者模式
  6. 静默升级linux,Firefox 10 正式发布 支持静默升级功能
  7. linux系统装fluent没有界面,linux系统下安装fluent
  8. 苹果输入法自动合并两个短横线/减号的解决方法
  9. 黑马程序员----字典、NSDictionary
  10. 【sdx62】QCMAP_CLI手动拨号操作说明