我正在使用 PHP (Zend) 和 MySQL 从头开始编写购物车程序。现在我正在实现访客购物车,并将购物车中的物品保存到数据库中的表中。因此,表中的每个项目都有以下字段:
item_id session_id some_other_details_fields
当用户访问该网站时,我使用 session_start() 分配一个会话 ID,如果他或她将某些内容添加到购物车中,我会在上面的表格中插入一行。
因此,当用户想要编辑或删除购物车中的某些内容时,他们可以执行以下操作:
mydomain/cart/edit?item_id=XXX
和
mydomain/cart/delete?item_id=XXX
一个明显的问题是用户可以故意更改 XXX 以访问其他人的商品信息或从其他人的购物车中删除商品。所以我正在考虑添加 mydomain/cart/edit?item_id=XXX&sess_id=YYY 以验证 sess_id YYY 是否与数据库中项目 XXX 的 session_id 匹配。
我不知道这是否是一个好习惯,以及使用会话 ID 来验证用户身份是否就足够了。对此的任何想法或参考将不胜感激。
编辑:
我想尽可能长时间地保存购物车中的物品(例如,最多 1 年),所以我使用存储在 cookie 中的会话 ID 来识别用户并将他们的物品保存在数据库中的购物车中,以确保它不会被只要用户不清理他们的cookies,就会丢失。我在想会话通常用于在较短的时间内存储用户数据,并且可能不如数据库可靠,如果这是错误的,请告诉我。
对于注册用户,我为他们的购物车使用单独的表格,并使用 user_id 来识别他们。如果客人注册,我会将他们的物品从“客人购物车表”移动到“注册用户购物车表”。与其使用可能不时被意外清理的会话,我更愿意手动清理“客人购物车表”,只是为了省心。
我是 Zend 的新手,所以不太确定如何使用 Zend 类编写它。所以我决定对这些东西使用php。
如果我上面做的事情很愚蠢,请纠正我。:)