2014-06-14 113 views
0

我尝试执行购物车。在开始时,我将所选产品保存在一个数组SESSION 中,而客户订单未完成。 但是,我的工作并不完美,因为我没有使用会话ID,也没有将所选产品 插入数据库,因此我无法管理会话。 现在,我想改进我的代码,为每个客户获取唯一的sessionID。 我看到更多的例子在这个问题上,在这里我想知道哪个更好用:购物车和会话ID

//session_id($_GET['PHPSESSID']); session_start(); 
$session_id=session_id('PHPSESSID'); 

- 或 -

session_start(); 
$sessionID = $_COOKIE['PHPSESSID']; 

话,我会选择的产品保存到数据库宽度此$ SESSION_ID 。

需要注意的是,我用一个简单的方式来完成客户订单和存储选择 项目分贝,这是通过客户的电子邮件验证。经过custmer验证​​他/她的电子邮件 我要回去他/她他/她可以更新他/她的购物车物品或继续购物的页面。 这里如何获得$ session_id来做到这一点。 请指导我在这个issue.Thanks

+0

wat将存储对象ShoppingCart放入$ _SESSION数组中? –

回答

2

他们都应该返回相同的事情,它只是两种不同的方式引用它。尽管我会建议您不要在会话ID中键入用户,因为用户可以随时删除Cookie(这是存储ID的位置),也可能会过期,然后您将不得不创建一个全新的用户,这会导致您丢失所有的记录每一次。我建议将用户键入数据库中的主键。

+0

感谢cujomalainey,好吧,如果我给每个会话的主键,是否真的要在电子邮件验证后完成客户订单 我应该发送该密钥与按摩然后当用户验证 他的电子邮件密钥将传回到我的网站显示结算顺序。 另一个问题, - 可以通过session_id('PHPSESSID')或从数据库自动生成此密钥吗? -一般来说,在这里使用session_id('PHPSESSID')是否有其他原因很重要? –

+1

我个人从不使用PHPSESSID,我只是觉得它周围有很多风险。通常我使用我的MySQL数据库中的主键。只要值被转义,当你正在进行查询时,它们就是安全的。 MySQL还可以自动增加其字段,以便照顾具有唯一的ID。是的,他们可以存储在一个电子邮件的链接,一些其他人虽然更喜欢使用一个令牌(如当前时间的MD5散列)来安全地放在他们的电子邮件链接,因为它不保证预期的用户将接收但它在你的网站上,因为他们只是认证。 – cujo

1

只需将会话ID存储在cookie中,直到(例如2天)用户在电子邮件验证后返回站点,然后完成订单。