欢迎进入极速独立站群官方网! 咨询电话:13135381668 销售QQ:1000207

当前位置:首页 - - 城市站群 - 操作说明 - 文章详情
编辑推荐

商品浏览记录功能,方法灵活,给出具体实例

浏览:3197 发布时间:2017-06-23
上次有位同学在群里吼,大家当时给出了思路,可是可能对于PHP刚入门的或者不会写代码的P粉还是有点难度的。刚才抽空写了个。共享出来,我觉得只要有产品订购功能的都需要吧。

如图:



代码部分:
代码中可能会把"
"给隐藏鸟。注意分辨。
.
  1. /*
  2. *浏览记录
  3. *param        $num int 记录条数 默认10条 提示:cookie存数据大小有限制,一般为4K
  4. *param        $day int 记录保存时间 默认7天
  5. *param        $id string 商品id 分类 等等参数值, 如cid,id 参数值以除'|'外的其他字符分割
  6. *return datastr string        商品id数据字符串
  7. */
  8. //setcookie("views",'');
  9. //exit;

  10. function RecentViews($num=10,$day=7,$id)
  11. {        
  12.         $id = isset($id) ? $id : 0;
  13.         if(isset($_COOKIE['views']))
  14.         {        
  15.                 //直接替换
  16.                 if($num==1)
  17.                 {        
  18.                         setcookie("views",$id,time()+3600*$day);
  19.                         $datastr = $_COOKIE['views'];
  20.                 }
  21.                 else
  22.                 {        
  23.                         $datastr = $_COOKIE['views'];
  24.                         $ids = explode('|',$datastr);
  25.                         //在限定记录数以内
  26.                         if(count($ids )< $num){
  27.                                 //id是否已经存在
  28.                                 if(!in_array($id,$ids)){
  29.                                         $datastr .= '|'.$id;
  30.                                         setcookie("views",$datastr,time()+3600*$day);
  31.                                 }
  32.                         }
  33.                         else
  34.                         {
  35.                                 if(!in_array($id,$ids))
  36.                                 {
  37.                                         $datastr = str_replace($ids[0].'|','',$datastr);
  38.                                         $datastr .= '|'.$id;
  39.                                         setcookie("views",$datastr,time()+3600*$day);
  40.                                 }
  41.                         }
  42.                         
  43.                 }
  44.         }
  45.         else
  46.         {
  47.                 setcookie("views",$id,time()+3600*$day);
  48.                 //php的cookie不会及时生效 直接访问报错 需要刷新一次
  49.                 @$datastr = $_COOKIE['views'];
  50.         }
  51.         return $datastr;
  52. }
  53. /*****************************演示实例*****************************/

  54. require(dirname(__FILE__).'/include/config.inc.php');
  55. $id = isset($id) ? $id : 0;
  56. $cid = isset($cid) ? $cid : 6;
  57. $ids = RecentViews($num=5,$day=2,$id);
  58. //print_r($ids);
  59. $ids = explode('|',$ids);
  60. echo "您浏览过的商品: ".'
  61. ';
  62. foreach($ids as $v){
  63.         /*如果传入的参数是cid,id,这样可以构造更灵活的sql语句
  64.         $idstr = explode(',',$v);
  65.         $id = $idstr[1];
  66.         $cid = $idstr[0];*/
  67.         $r = $dosql->GetOne("SELECT * FROM `#@__infoimg` WHERE id=$v AND checkinfo=true");
  68.         $url = "productshow.php?cid=$cid&id=$v";

  69.         echo "商品名称: ".$r['title'].'

  70. ';
  71.         echo "商品规格: ".$r['keywords'].'

  72. ';
  73.         echo "商品图片: ".'

  74. ';

  75. }
复制代码
cookie中存的参数值可以多种多样,大家随意发挥吧。
例如:$ids = RecentViews($num=5,$day=2,($cid.','.$id));

请支持PHPMYWIND,多交流技术,分享经验,提建议,浅谈它事。