Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库中存储和加载购物车_Php_Database_Zend Framework_Session - Fatal编程技术网

Php 在数据库中存储和加载购物车

Php 在数据库中存储和加载购物车,php,database,zend-framework,session,Php,Database,Zend Framework,Session,我正在为客户编写一个电子商务网站/管理界面。他们正在做一些B2B,所以他们希望购物车保存/从数据库加载,这样,如果用户关闭浏览器并重新打开,购物车就完好无损了 该应用程序正在使用Zend框架,我一直在寻找。因此,我可以轻松地将会话保存在数据库中。如果我想在会话中加载数据库,那么反过来又如何呢 另外,如果用户只在重新打开浏览器时加载购物车项目,而不是在每个页面上加载,这也会很好,因为这会对性能产生一些影响 有什么建议吗 子问题:我假设Zend_会话正在使用$\u会话,所以一切都基于php会话id,

我正在为客户编写一个电子商务网站/管理界面。他们正在做一些B2B,所以他们希望购物车保存/从数据库加载,这样,如果用户关闭浏览器并重新打开,购物车就完好无损了

该应用程序正在使用Zend框架,我一直在寻找。因此,我可以轻松地将会话保存在数据库中。如果我想在会话中加载数据库,那么反过来又如何呢

另外,如果用户只在重新打开浏览器时加载购物车项目,而不是在每个页面上加载,这也会很好,因为这会对性能产生一些影响

有什么建议吗

子问题:我假设Zend_会话正在使用$\u会话,所以一切都基于php会话id,是否有可能更改它使用的has id

我正在考虑生成我的唯一id,并用cookies将其推送到客户端


注2:用户可以构建一些未登录的购物车,因此我无法依赖登录过程……

当我想在两个漏洞之前存储网格的列设置时,我遇到了与您相同的问题。 我没有在DB中完成整个会话。我只是检查一下购物车里是否有东西。如果会话中没有内容,请从db加载。当然,每换一次篮筐,都要把球留给db

我使用了Session_Namespace::to_array()方法中的序列化数组。不是整个会话的名称空间,因为我无法将其加载回


您可以使用标志,我会告诉您,您尝试从db加载一次,例如,在会话中db中没有相同的购物车,您不想尝试加载每个请求。

您需要做的第一件事是确定如何使会话在用户关闭浏览器之后保持不变。检查手册的Zend_会话配置部分:

请参阅“记住我的秒数”选项中的部分。一旦你有了这个功能,当用户第二天回来时,你在会话中存储的任何东西都将可用


至于在会话中存储购物车,我建议创建一个包含此信息的“购物车”类。然后,您可以将整个对象存储在会话中,或者将数据存储在数据库中的“carts”表中,而只将cart的ID存储在用户会话中。然后在随后的访问中,您只需检查ID是否存在,并在有ID的情况下加载购物车。

这可能是@Tim的副本:谢谢您的回答,实际上,在发布了几个小时后,我发现了关于
rememberMe
功能的问题,它完成了工作。