使用Session和Cookie实现购物车的比较

购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而已。用户可以在购物网站的不同页面之间跳转,以选购自己喜爱的商品,点击购买时,该商品就自动保存到你的购物车中,重复选购后,最后将选中的所有商品放在购物车中统一到付款台结账,这也是尽量让客户体验到现实生活中购物的感觉。服务器通过追踪每个用户的行动,以保证在结账时每件商品都物有其主。

购物车的功能包括以下几项:

把商品添加到购物车,即订购

删除购物车中已定购的商品

修改购物车中某一本图书的订购数量

清空购物车

显示购物车中商品清单及数量、价格

实现购物车的关键在于服务器识别每一个用户并维持与他们的联系。但是HTTP协议是一种“无状态(Stateless)”的协议,因而服务器不能记住是谁在购买商品,当把商品加入购物车时,服务器也不知道购物车里原先有些什么,使得用户在不同页面间跳转时购物车无法“随身携带”,这都给购物车的实现造成了一定的困难。

目前购物车的实现主要是通过cookie、session或结合数据库的方式。下面分析一下它们的机制及作用。

1. cookie

cookie是由服务器产生,存储在客户端的一段信息。它定义了一种Web服务器在客户端存储和返回信息的机制,cookie文件它包含域、路径、生存期、和由服务器设置的变量值等内容。当用户以后访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。通过让服务器读取原先保存到客户端的信息,网站能够为浏览者提供一系列的方便,例如在线交易过程中标识用户身份、安全要求不高的场合避免用户重复输入名字和密码、门户网站的主页定制、有针对性地投放广告等等。利用cookie的特性,大大扩展了WEB应用程序的功能,不仅可以建立服务器与客户机的联系,因为cookie可以由服务器定制,因此还可以将购物信息生成cookie值存放在客户端,从而实现购物车的功能。用基于cookie的方式实现服务器与浏览器之间的会话或购物车,有以下特点:

cookie存储在客户端,且占用很少的资源,浏览器允许存放300个cookie,每个cookie的大小为4KB,足以满足购物车的要求,同时也减轻了服务器的负荷;

cookie为浏览器所内置,使用方便。即使用户不小心关闭了浏览器窗口,只要在cookie定义的有效期内,购物车中的信息也不会丢失;

cookie不是可执行文件,所以不会以任何方式执行,因此也不会带来病毒或攻击用户的系统;

基于cookie的购物车要求用户浏览器必须支持并设置为启用cookie,否则购物车则失效;

存在着关于cookie侵犯访问者隐私权的争论,因此有些用户会禁止本机的cookie功能。

2. session

session是实现购物车的另一种方法。session提供了可以保存和跟踪用户的状态信息的功能,使当前用户在session中定义的变量和对象能在页面之间共享,但是不能为应用中其他用户所访问,它与cookie最重大的区别是,session将用户在会话期间的私有信息存储在服务器端,提高了安全性。在服务器生成session后,客户端会生成一个sessionid识别号保存在客户端,以保持和服务器的同步。这个sessionid是只读的,如果客户端禁止cookie功能,session会通过在URL中附加参数,或隐含在表单中提交等其他方式在页面间传送。因此利用session实施对用户的管理则更为安全、有效。

同样,利用session也能实现购物车,这种方式的特点是:

session用新的机制保持与客户端的同步,不依赖于客户端设置;

与cookie相比,session是存储在服务器端的信息,因此显得更为安全,因此可将身份标示,购物等信息存储在session中;

session会占用服务器资源,加大服务器端的负载,尤其当并发用户很多时,会生成大量的session,影响服务器的性能;

因为session存储的信息更敏感,而且是以文件形式保存在服务器中,因此仍然存在着安全隐患。

3. 结合数据库的方式

这也是目前较普遍的模式,在这种方式中,数据库承担着存储购物信息的作用,session或cookie则用来跟踪用户。这种方式具有以下特点:

数据库与cookie分别负责记录数据和维持会话,能发挥各自的优势,使安全性和服务器性能都得到了提高;

每一个购物的行为,都要直接建立与数据库的连接,直至对表的操作完成后,连接才释放。当并发用户很多时,会影响数据库的性能,因此,这对数据库的性能提出了更高的要求;

使cookie维持会话有赖客户端的支持。

各种方式的选择:

虽然cookie可用来实现购物车,但必须获得浏览器的支持,再加上它是存储在客户端的信息,极易被获取,所以这也限制了它存储更多,更重要的信息。所以一般cookie只用来维持与服务器的会话,例如国内最大的当当网络书店就是用cookie保持与客户的联系,但是这种方式最大的缺点是如果客户端不支持cookie就会使购物车失效。

Session 能很好地与交易双方保持会话,可以忽视客户端的设置。在购物车技术中得到了广泛的应用。但session的文件属性使其仍然留有安全隐患。

结合数据库的方式虽然在一定程度上解决了上述的问题,但从上面的例子可以看出:在这种购物流程中涉及到对数据库表的频繁操作,尤其是用户每选购一次商品,都要与数据库进行连接,当用户很多的时候就加大了服务器与数据库的负荷

用session和mysql实现购物车_Session和Cookie实现购物车相关推荐

  1. thinkphp session mysql_ThinkPHP实现将SESSION存入MYSQL的方法

    ThinkPHP实现将SESSION存入MYSQL的方法 首先index.php中设置为: define('APP_DEBUG', true);//设置为调试模式 require '../ThinkP ...

  2. php中购物车功能,php如何实现购物车功能

    php实现购物车功能的方法:首先登录到网站中浏览商品:然后购买指定的商品,进入购物车页面中,并在该页面实现更改商品数量.删除商品.清空购物车.继续购物等:最后实现生成订单,提交订单等操作即可. 本文介 ...

  3. php购物车完整类代码,PHP购物车类代码

    PHP购物车类代码 在开发网络购物网站的时候,购物车类是购物网站的必备模块.总结一个php实现购物车类.实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能.采用了php单一类的原理, ...

  4. cart购物车php文件,php购物车实现方法,php购物车实现

    php购物车实现方法,php购物车实现 本文实例讲述了php购物车实现方法.分享给大家供大家参考.具体分析如下: 这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了,在商城开发中,这 ...

  5. java购物车的实现并发控制_购物车的实现原理

    购物车相当于现实中超市的购物车,不同的是一个是实体车,一个是虚拟车而已.用户可以在购物网站的不同页面之间跳转,以选购自己喜爱的商品,点击购买时,该商品就自动保存到你的购物车中,重复选购后,最后将选中的 ...

  6. zencart购物车修改调用显示购物车图片,修改边栏购物车模版

    zencart购物车修改调用显示购物车图片,修改边栏购物车模版 显示购物车图片教程 屏幕调暗了所以图片截取有点暗 开始是这样的 本来是没有图片的现在改了有图片 的 自己举一反三吧 事例 调用边栏购物车 ...

  7. cookie版购物车

    #region 添加到购物车AddShoppingCar /// <summary> /// 添加到购物车AddShoppingCar /// </summary> /// & ...

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

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

  9. could not start avd怎么解决_双十一又到了,你的购物车塞满了吗?「购物车」用英语该怎么说?...

    文章末尾有福利哦 11月11日,星期1, 每年的双十一又如约而至, 小编想问问各位, 昨晚双十一狂欢夜, 你清空购物车了吗? "购物车"用英语怎么说? shopping cart ...

最新文章

  1. 当 python Pip 升级失败
  2. python入门作业编程题-【python基础语法】第10天作业练习题
  3. 003_onreadystatechange事件
  4. Shadow Properties之美(二)【Microsoft Entity Framework Core随笔】
  5. php 怎么解析文本,PHP解析自定义纯文本数据库
  6. Bootstrap3 Font Awesome 字体图标旋转或翻转图标
  7. 图神经网络,这到底是个什么?
  8. 2017.9.13 序列维护 思考记录
  9. Unity直接导出Android Apk包环境配置
  10. 通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)
  11. 高效能人士的七个习惯读后感与总结概括-(第四章)
  12. 【论文阅读】Attention-based Deep Multiple Instance Learning
  13. 最详细教程:Zotero和Better BibTeX安装,以及如何在R markdown中引用文献
  14. Eat Pray Love!
  15. 测试工程师入门知识点整理
  16. mysql blob 读取 图片_mysql中以blob形式存储的图片文件 通过ajax方式传输 在js中设置成img控件的src...
  17. [电影]推荐《启示》--完美的玛雅文化背景
  18. python 控制手机摄像头_用Python获取摄像头并实时控制人脸 !
  19. python绘图基础
  20. CC3200——管脚的细节

热门文章

  1. R系银河麒麟配置本地镜像源
  2. 专业修图工具:Affinity Photo for mac
  3. 秒杀迅雷的linux命令行下载文件以及常用工具:wget、Prozilla、MyGet、Linuxdown、Curl、Axel
  4. 根证书,解决win7 sp1 64位系统在线安装VS2017 或VS2019的失败
  5. 详解RAI I、C++中的智能指针以及一些常见的面试题
  6. H3C wifi 命令
  7. Sketch(三)——插件
  8. 树莓派上串口TTL转RS485模块
  9. mysql utf8 表情符号_MySQLutf8mb4字符集:支持emoji表情符号
  10. 可变参数和Steam流的基本使用