现在做了一个小型的商品系统,做到购物车这一块了
购物车的流程算是明白的。
我是这样搞的:
访客光临网站先产生一个cartID,随机的独立的32位字符串,然后将这个字符串放入cookie,并设定了过期时间
而购物车的内容我都是放在数据库里的,也就是有一个独立的表,table_cart添加新商品到购物车,先判断用户有没有登陆,如果登陆就用user_id,没有登陆就用cartID,这些都处理好了如果是登陆用户,购物车里的商品是永久保留,当然,也可以根据条件如:一个月不登陆就删了之类的。现在的问题是:我如何将没有登陆的访问加入购物车的商品删除呢?本来我的想法是给table_cart加个字段,给他一个时间,然后通过时间来删除,有没有更好的办法?我没有用session,请大家给个比较好的思路。先谢谢了

解决方案 »

  1.   

    cookie 不是可以设置失效期吗  有效期一到自动删除了。
      

  2.   

    未登录用户的购物车放cookie里,先序列化了, 然后setcookie设置好过期时间就行了。
      

  3.   

    楼上的意思,登陆的放table,未登陆的放cookie这样也是一个解决方案,省得麻烦了
      

  4.   


    如果说登陆的放tabel,未登陆的放cookie,那我前面做的就需要改动了,包括sessionID,以及cartID都不需要了吧?我想了一下,感觉这两个值都没有必要再留着了。
    sessionID是为了没有登陆的用户将商品放到购物车
    cartID其实就是sessionID,这两个值都没有用处了
      

  5.   

    都可以放在表中
    既然有 “也可以根据条件如:一个月不登陆就删了之类的” 一说,那么最后访问时间这个字段是一定存在的了虽然 没有用session,但你的思路依然是 session 的思路,而使用 session 时“最后访问时间”是充分必要条件
      

  6.   


    是的,本来我是打算模拟session的方法来弄购物车的,结果,就是删除不怎么好弄,我的想法,让购物车的内容都放到数据库中,这样省了不少的事,处理起来也方便一点,数据交互的时候也轻松点,就是登陆跟未登陆把头搞大了。想想,还是不要用cookie了吧,再加上一个过期时间就成了,cart.class中处理过期的数据,不知道这样可不可行
      

  7.   

    大神啊大神$_cart_id = get_cookie('cartID');
    if (!$_cart_id)
    {
    $new_id = md5(uniqid(rand()));
    set_cookie('cartID',$new_id,time()+86400);
    }
    访问网站时创建一个购物车的id,时间是一天
    我怎么删除数据库中已经过期的纪录呢?
    是不是在购物车表中增加一个字段,用来放过期时间,然后用class中增加一个方法,用来删除过期纪录还是怎么弄?
      

  8.   

    产先,未登录的用户干嘛要在数据库中存他们的东西,这不应该啊,就算他登录了,再识别哪一条未登录的定购信息属于他也是件麻烦的事情
    就保存本地cookie吧,设置过期更方便
    若非要保存到数据库,也不用啥字段了,像这样的表里后面必有一个时间字段,插入数据时就把时间也插入了
    至于删除,可以定时清理,这个频率设定一天也行,一星期也行,也可以当用户登录时再删,反正用户也不知道,你存的这样数据,很有可能该用户不会再登录了,数据多数是冗余的,还是建议存cookie方便省事更合理
      

  9.   

    很明显未登录用户是COOKIE,用SESSION记录不合适,原因太多了,丢个COOKIE给浏览器最合适了。登陆用户屁话都不用说,直接入库,有网购经验的都知道是什么样子。