上次有位同学在群里吼,大家当时给出了思路,可是可能对于PHP刚入门的或者不会写代码的P粉还是有点难度的。刚才抽空写了个。共享出来,我觉得只要有产品订购功能的都需要吧。
如图:
代码部分:
代码中可能会把"
"给隐藏鸟。注意分辨。
.
-
/*
-
*浏览记录
-
*param $num int 记录条数 默认10条 提示:cookie存数据大小有限制,一般为4K
-
*param $day int 记录保存时间 默认7天
-
*param $id string 商品id 分类 等等参数值, 如cid,id 参数值以除'|'外的其他字符分割
-
*return datastr string 商品id数据字符串
-
*/
-
//setcookie("views",'');
-
//exit;
-
-
function RecentViews($num=10,$day=7,$id)
-
{
-
$id = isset($id) ? $id : 0;
-
if(isset($_COOKIE['views']))
-
{
-
//直接替换
-
if($num==1)
-
{
-
setcookie("views",$id,time()+3600*$day);
-
$datastr = $_COOKIE['views'];
-
}
-
else
-
{
-
$datastr = $_COOKIE['views'];
-
$ids = explode('|',$datastr);
-
//在限定记录数以内
-
if(count($ids )< $num){
-
//id是否已经存在
-
if(!in_array($id,$ids)){
-
$datastr .= '|'.$id;
-
setcookie("views",$datastr,time()+3600*$day);
-
}
-
}
-
else
-
{
-
if(!in_array($id,$ids))
-
{
-
$datastr = str_replace($ids[0].'|','',$datastr);
-
$datastr .= '|'.$id;
-
setcookie("views",$datastr,time()+3600*$day);
-
}
-
}
-
-
}
-
}
-
else
-
{
-
setcookie("views",$id,time()+3600*$day);
-
//php的cookie不会及时生效 直接访问报错 需要刷新一次
-
@$datastr = $_COOKIE['views'];
-
}
-
return $datastr;
-
}
-
/*****************************演示实例*****************************/
-
-
require(dirname(__FILE__).'/include/config.inc.php');
-
$id = isset($id) ? $id : 0;
-
$cid = isset($cid) ? $cid : 6;
-
$ids = RecentViews($num=5,$day=2,$id);
-
//print_r($ids);
-
$ids = explode('|',$ids);
-
echo "您浏览过的商品: ".'
-
';
-
foreach($ids as $v){
-
/*如果传入的参数是cid,id,这样可以构造更灵活的sql语句
-
$idstr = explode(',',$v);
-
$id = $idstr[1];
-
$cid = $idstr[0];*/
-
$r = $dosql->GetOne("SELECT * FROM `#@__infoimg` WHERE id=$v AND checkinfo=true");
-
$url = "productshow.php?cid=$cid&id=$v";
-
-
echo "商品名称: ".$r['title'].'
-
-
';
-
echo "商品规格: ".$r['keywords'].'
-
-
';
-
echo "商品图片: ".'
-
-
';
-
-
}
-
复制代码
cookie中存的参数值可以多种多样,大家随意发挥吧。
例如:$ids = RecentViews($num=5,$day=2,($cid.','.$id));
请支持PHPMYWIND,多交流技术,分享经验,提建议,浅谈它事。