Working environment :PHP5面向对象,MVC模式,Yii框架
Shopping cart :每种产品的数量和价格清单 . 运输车的作用只是将产品放入其中,如果用户想要购买物品,则:
-
如果客人:注册/登录
-
if member:购物车发送到验证控制器以验证/更新购物车,包括所有付款/运输选项(优惠券/账单地址,购物地址等)
购物车手柄:
-
添加/删除产品
-
on timeout>清除自身
购物车不处理:
-
折扣/优惠券
-
所有付款和结算流程
The question is :如何设计它是高效和安全的?
选项1
创建一个sql表并存储:
来自session_id()的
-
PHPSESSID
-
item_id
-
数量
-
unit_price
-
datetime(每次更新购物车时刷新)
在mysql上创建一个事件,删除日期> 30分钟的每一行 .
然后,为了获得购物车,您可以使用当前会话ID从表中获取所有项目,并创建一个foreach()来获取所有项目 .
选项2
将所有购物车信息保存在cookie中
在我看来,选项1比选项2更安全但消耗更多的资源并且可能使SQL数据库暴露于攻击(创建溢出数据库的大量新会话) . 选项2暴露于cookie注入,但需要较少的资源并向用户公开信息 .
还有其他/更好的方法吗?
1 回答
为什么不简单地分配一个包含
quantity
和item_id
的$_SESSION["shoppingCart"]数组?例如:然后,在处理购物车时,根据存储的
item_id
调用一个从数据库中收集所有必需数据的方法 . 然后,您可以继续计算实际的购物车价格 .这样,当
$_SESSION
到期时,您不必触发数据库中的任何事件 . 如果要保存$_SESSION
,也可以将其保存在数据库中 .