首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计一个安全的购物车来处理客人?

问如何设计一个安全的购物车来处理客人?
EN

Stack Overflow用户
提问于 2015-01-23 11:06:00
回答 1查看 2.7K关注 0票数 1

工作环境:面向PHP5对象、MVC模式、Yii框架

购物车:列出每种商品的数量和价格。运货车的作用是只将产品放入其中,如果用户想购买商品,则:

  • 如果客人:注册/登录
  • 如果成员:购物车发送到验证控制器,以验证/更新购物车的所有付款/运输选项,如你所能想到的(优惠券/帐单地址,购物地址等)

购物车手柄:

  • 添加/删除产品
  • 关于超时>从自身清除

购物车不能处理:

  • 折扣/优惠券
  • 所有付款及付款程序

问题是:如何将其设计成高效和安全?

备选案文1

创建sql表并存储:

  • 来自session_id()的PHPSESSID
  • item_id
  • 数量
  • unit_price
  • 日期时间(每次更新购物车时刷新)

在mysql上创建一个事件,删除日期时间> 30分钟的每一行。

然后使用当前会话id从表中获取所有项目,并创建一个foreach()来获取它们。

选项2

将所有购物车信息保存在cookie中

从我的观点来看,选项1比选项2更安全,但是使用更多的重新源,并且可能使SQL数据库面临攻击(创建大量的新会话,使数据库溢出)。选项2公开了cookie注入,但获得的重新来源较少,并且向用户公开信息。

还有其他更好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-23 11:19:27

为什么不简单地分配一个包含$_SESSION["shoppingCart"]和item_id的quantity数组呢?例如:

代码语言:javascript
复制
$_SESSION["shoppingCart"] = array(
   $item_id => $quantity
);

然后,在处理购物车时,调用一个基于存储的item_id从数据库收集所有所需数据的方法。然后,您可以继续计算实际的购物车价格。

这样,当$_SESSION过期时,您不必触发数据库中的任何事件。如果要保存$_SESSION,也可以将其保存在数据库中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28108523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档