你现在的位置:首页 > PHP网站建设知识库 > ecmall > 正文

实现ecmall商品浏览历史记录

查看ecmall实现商品浏览历史记录的原理,是在每次打开商品详情页面时,将当前商品的id加入cookie中,
按照这个思路,在其他需要使用浏览历史记录的系统中也可以这样设计。

/* 取得浏览历史 */  
  
   function _get_goods_history($id,$num = 9)  
  
   {  
         
       $goods_list = array();  
  
       $goods_ids  = ecm_getcookie('goodsBrowseHistory');//取得cookie中的浏览记录  
  
       $goods_ids  = $goods_ids ? explode(',', $goods_ids) : array();  
  
       if ($goods_ids)  
  
       {  
  
           $rows = $this->_goods_mod->find(array(  
  
               'conditions' => $goods_ids,  
  
               'fields'     => 'goods_name,default_image',  
  
           ));  
  
           foreach ($goods_ids as $goods_id)//没有图片的商品设置为默认图片  
  
           {  
  
               if (isset($rows[$goods_id]))  
  
               {  
  
                   empty($rows[$goods_id]['default_image'])&& $rows[$goods_id]['default_image'] =   
                         Conf::get('default_goods_image');  
  
                   $goods_list[] =$rows[$goods_id];  
  
               }  
  
           }  
  
       }  
  
       $goods_ids[] = $id;//将当前商品id存进历史记录  
       if (count($goods_ids) > $num)  
       {  
           unset($goods_ids[0]);//超过9个时删除最早的一个  
       }  
       ecm_setcookie('goodsBrowseHistory',join(',', array_unique($goods_ids)));//设置cookie  
       return $goods_list;  

 

functionecm_getcookie($key= '')  
  
{  
    return isset($_COOKIE[$key]) ?$_COOKIE[$key] : 0;  
}  

functionecm_setcookie($key,$value, $expire = 0, $cookie_path=COOKIE_PATH, $cookie_domain=COOKIE_DOMAIN)  
  
{  
    setcookie($key, $value, $expire,$cookie_path, $cookie_domain);  
}