Php 多页签出-传输数据

Php 多页签出-传输数据,php,symfony,checkout,Php,Symfony,Checkout,我正在一个小的电子商店里做一个简单的结账,我想给用户一个最终审查的选项。因此,流程是购物篮->买家信息->订单审核->订单确认 现在的问题是,在第2阶段和第3阶段之间传输数据的最佳方式是什么 一种选择是使用HTML和隐藏表单字段。缺点是我必须在第3阶段之后再做一次输入检查(因为用户可以修改输入) 另一个选择是使用会话。由于顺序存储在对象(Sf2实体)中,我必须将其转换为数组,然后再将其转换回。此外,我还了解到,将太多数据放入会话变量会对性能产生负面影响 第三种选择是存储在数据库中,但我宁愿在最终

我正在一个小的电子商店里做一个简单的结账,我想给用户一个最终审查的选项。因此,流程是购物篮->买家信息->订单审核->订单确认

现在的问题是,在第2阶段和第3阶段之间传输数据的最佳方式是什么

一种选择是使用HTML和隐藏表单字段。缺点是我必须在第3阶段之后再做一次输入检查(因为用户可以修改输入)

另一个选择是使用会话。由于顺序存储在对象(Sf2实体)中,我必须将其转换为数组,然后再将其转换回。此外,我还了解到,将太多数据放入会话变量会对性能产生负面影响

第三种选择是存储在数据库中,但我宁愿在最终确认之前不存储任何内容


有更好的选择吗?

我认为会话变量在这里应该很好,除非您有大量表单数据。如果担心内存问题,可以在最终确认后删除该数据

我认为会话变量在这里应该很好,除非您有大量表单数据。如果担心内存问题,可以在最终确认后删除该数据

您可以将这些数据存储在缓存级别(如APC或Memcached),并设置过期时间

或者,就像使用隐藏输入一样,将值设置为:hash(secret+base64(data))+base64(data),您应该在第3阶段首先验证hash


忘了我糟糕的英语

您可以将这些数据存储在缓存级别(如APC或Memcached),并设置过期时间

或者,就像使用隐藏输入一样,将值设置为:hash(secret+base64(data))+base64(data),您应该在第3阶段首先验证hash


忘了我糟糕的英语

会话对于这项工作很合适。您可以调整会话处理,以便将数据存储在数据库中。缓存并不是更快,因为它只是一个数据库读/写过程。

会话对于这项工作很合适。您可以调整会话处理,以便将数据存储在数据库中。缓存并不是更快,因为它只是一个数据库读写过程。

我会将它保存在会话中,使用flashdata。这工作得很好,会话在需要时被清除

要在symfony 2中使用flashdata,请执行以下操作:

$this->get('session')->setFlash('key', 'value');

我会用flashdata将其保存在会话中。这工作得很好,会话在需要时被清除

要在symfony 2中使用flashdata,请执行以下操作:

$this->get('session')->setFlash('key', 'value');

在结帐前不想储存任何东西会包括有一张放购物车和购物车物品的桌子吗?或者你已经有了吗?@thegaffney,我有了,但是我宁愿在真正下订单之前不保存数据。否则,我需要一个清理机制来清理那些没有下过的订单……最后,我使用了会话。谢谢你的回答,+1!在结帐前不想储存任何东西会包括有一张放购物车和购物车物品的桌子吗?或者你已经有了吗?@thegaffney,我有了,但是我宁愿在真正下订单之前不保存数据。否则,我需要一个清理机制来清理那些没有下过的订单……最后,我使用了会话。谢谢你的回答,+1!下一次请求时flashdata是否已清除?如果客户刷新订单确认页面怎么办?下次请求时flashdata是否已清除?如果客户刷新订单确认页面怎么办?