现在做了一个小型的商品系统,做到购物车这一块了
购物车的流程算是明白的。
我是这样搞的:
访客光临网站先产生一个cartID,随机的独立的32位字符串,然后将这个字符串放入cookie,并设定了过期时间
而购物车的内容我都是放在数据库里的,也就是有一个独立的表,table_cart添加新商品到购物车,先判断用户有没有登陆,如果登陆就用user_id,没有登陆就用cartID,这些都处理好了如果是登陆用户,购物车里的商品是永久保留,当然,也可以根据条件如:一个月不登陆就删了之类的。现在的问题是:我如何将没有登陆的访问加入购物车的商品删除呢?本来我的想法是给table_cart加个字段,给他一个时间,然后通过时间来删除,有没有更好的办法?我没有用session,请大家给个比较好的思路。先谢谢了
购物车的流程算是明白的。
我是这样搞的:
访客光临网站先产生一个cartID,随机的独立的32位字符串,然后将这个字符串放入cookie,并设定了过期时间
而购物车的内容我都是放在数据库里的,也就是有一个独立的表,table_cart添加新商品到购物车,先判断用户有没有登陆,如果登陆就用user_id,没有登陆就用cartID,这些都处理好了如果是登陆用户,购物车里的商品是永久保留,当然,也可以根据条件如:一个月不登陆就删了之类的。现在的问题是:我如何将没有登陆的访问加入购物车的商品删除呢?本来我的想法是给table_cart加个字段,给他一个时间,然后通过时间来删除,有没有更好的办法?我没有用session,请大家给个比较好的思路。先谢谢了
如果说登陆的放tabel,未登陆的放cookie,那我前面做的就需要改动了,包括sessionID,以及cartID都不需要了吧?我想了一下,感觉这两个值都没有必要再留着了。
sessionID是为了没有登陆的用户将商品放到购物车
cartID其实就是sessionID,这两个值都没有用处了
既然有 “也可以根据条件如:一个月不登陆就删了之类的” 一说,那么最后访问时间这个字段是一定存在的了虽然 没有用session,但你的思路依然是 session 的思路,而使用 session 时“最后访问时间”是充分必要条件
是的,本来我是打算模拟session的方法来弄购物车的,结果,就是删除不怎么好弄,我的想法,让购物车的内容都放到数据库中,这样省了不少的事,处理起来也方便一点,数据交互的时候也轻松点,就是登陆跟未登陆把头搞大了。想想,还是不要用cookie了吧,再加上一个过期时间就成了,cart.class中处理过期的数据,不知道这样可不可行
if (!$_cart_id)
{
$new_id = md5(uniqid(rand()));
set_cookie('cartID',$new_id,time()+86400);
}
访问网站时创建一个购物车的id,时间是一天
我怎么删除数据库中已经过期的纪录呢?
是不是在购物车表中增加一个字段,用来放过期时间,然后用class中增加一个方法,用来删除过期纪录还是怎么弄?
就保存本地cookie吧,设置过期更方便
若非要保存到数据库,也不用啥字段了,像这样的表里后面必有一个时间字段,插入数据时就把时间也插入了
至于删除,可以定时清理,这个频率设定一天也行,一星期也行,也可以当用户登录时再删,反正用户也不知道,你存的这样数据,很有可能该用户不会再登录了,数据多数是冗余的,还是建议存cookie方便省事更合理