【问题标题】:long term session storage (php shopping cart)长期会话存储(php 购物车)
【发布时间】:2011-01-22 06:42:39
【问题描述】:

这更像是一个“你能指出我正确的方向吗”类型的问题。

基本上,我想为客户提供一种“保存”他们的购物车的方法,以便以后与亲戚一起查看(这是摄影师客户的“照片篮”)。

当使用我的“照片篮”时,它会创建一个篮子array,然后填充项目arrays

我的想法是 --- 为每个用户创建一个表,然后将 implode 中的 $_SESSION['basket'] 中的每个数组添加到 string,然后将此字符串添加到数据库中的一行。当用户重新登录时,他们保存的购物篮可以从数据库中分解出来,形成一个新的购物篮......

这是我的思路(本节尚未开始)。只是想知道是否有人能发现我可能遇到的任何明显的缺陷和错误。

感谢您的任何意见。

肖恩

【问题讨论】:

  • 我也在考虑这样做。您必须考虑的问题是该行何时更新?它是用户决定的(即保存按钮)还是应该每页都做。另外,请确保您对它有某种到期时间,以便它最终会消失。
  • 您可能希望将篮子直接保存到数据库表中,而不是从会话中序列化数组(更易于使用,而且您不必担心保存/恢复,因为它已经在持久存储)。
  • 好点。我的想法是忽略整个save to database 想法,直到用户真正点击save to view later,然后我继续保存数据。重新登录后,用户将能够从头开始或选择“加载您的最后一个购物篮”。

标签: php mysql arrays session


【解决方案1】:

不要为每个用户创建一个表。您可以创建一个包含 userid 和 datavalue 列的表,并将所有用户的购物篮保存在一个表中。您也不想内爆......在将 $_SESSION['basket'] 存储到数据库之前使用序列化,并在从数据库中读取它时取消序列化

【讨论】:

  • 中肯的建议。谢谢,不知道我为什么要为每个用户考虑一个新表... 在此处插入与疲劳相关的通用借口 :) 感谢serialize 的提醒,我没有使用过那个...
  • 我认为serialize 将采用一个数组并自动将其转换为我可以插入数据库行的字符串是否正确?
  • 正确,serialize 将采用任何 PHP 数据类型(不仅仅是数组)并将其转换为可以存储在数据库中的文本格式,而 unserialize 将从该字符串重新创建原始数据类型。唯一的例外是资源数据类型,它不能被序列化,以及对象中的资源属性。
  • 太棒了。 PHP 的创建者似乎竭尽全力使这种语言易于使用。 :) 难怪它变得如此受欢迎。
  • php 的 serialize() 有点类似于 Javascript 的 json,如果有帮助的话。它们都采用内部数据结构并将它们转换为可以轻松传递的明文字符串。
【解决方案2】:

如前所述,不要创建表,而是创建一行。很少有 php 购物车可以做到这一点(cs-cart)。 但是,过一会儿从桌子上删除旧的篮子......

【讨论】:

    猜你喜欢
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2023-03-27
    • 1970-01-01
    • 2013-01-20
    • 2013-02-05
    相关资源
    最近更新 更多