您现在的位置是:首页 > 其他

李清波 2015-09-22 其他 51672 复制当前网址

php使用cookie存库浏览记录详解


我们在做项目的时候,往往会一些模块是浏览记录列表,但我们又如何在PHP中实现浏览记录功能呢,现在我们通过cookies来实现


我们首先来分析一下思路

  1. 访问页面

  2. 获取存储浏览记录里面的商品数据列表

  3. 如果当前浏览的商品没有在历史记录里面则添加,有则更新

如果大概知道思路可以直接看代码


完整代码如下:

<?php

//如是COOKIE 里面不为空,则往里面增加一个商品ID
if (!empty($_COOKIE['SHOP']['history'])){
    
    //取得COOKIE里面的值,并用逗号把它切割成一个数组
    $history = explode(',', $_COOKIE['SHOP']['history']);
    
    //在这个数组的开头插入当前正在浏览的商品ID
    array_unshift($history, $id);
    
    //去除数组里重复的值
    $history = array_unique($history);
    // $arr = array (1,2,3,1,3);
    // $arr = array (1,1,2,3,3);
    // $arr = array (1,2,3);
    
    //当数组的长度大于5里循环执行里面的代码
    while (count($history) > 5){
        //将数组最后一个单元弹出,直到它的长度小于等于5为止
        array_pop($history);
    }


    //把这个数组用逗号连成一个字符串写入COOKIE,并设置其过期时间为30天
    setcookie('SHOP[history]', implode(',', $history), $cur_time + 3600 * 24 * 30);

}else{
    //如果COOKIE里面为空,则把当前浏览的商品ID写入COOKIE ,这个只在第一次浏览该网站时发生
    setcookie('SHOP[history]', $id, $cur_time + 3600 * 24 * 30);
}

//以上均为记录浏览的商品ID到COOKIE里,下面将讲到怎样用这样COOKIE里的数据

//取得COOKIE里的数据 ,格式为1,2,3,4 这样,当然也有可以为0
$history =isset ($_COOKIE['SHOP']['history']) ? $_COOKIE['SHOP']['history'] : 0;

//写SQL语句,用IN 来查询出这些ID的商品列表
$sql_history = "SELECT * FROM `goods` WHERE `goods_id` in ({$history})";


//执行SQL语句,返回数据列表
$goods_history = $db->getAll($sql_history);
if ($goods_history) {
    $tpl->assign ('goods_history',$goods_history);
}
?>

下面获取根据存储ID获取商品信息的mysql操作,可以根据自己的代码获取,可以使用原生态,也可以使用框架的查询数据库方法,自己可以适当修改一下,如果有什么不明白的可以留言一起讨论。

文章来源:https://liqingbo.com/blog-276.html

评论