博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php实现历史浏览记录
阅读量:6254 次
发布时间:2019-06-22

本文共 3013 字,大约阅读时间需要 10 分钟。

其实原理很简单,就是利用cookie,实现记录,其中需要注意的点就是,设置一下,你需要保存的cookie长度,记录时间,下面是ci框架的基本实现

如有更加好的思路实现,欢迎qq(1245049149)联系。

/**     * @desc    设置cookie浏览记录     * @date    2018-04-15 16:48:22     * @param   [string $type记录浏览类型【as 查看记录表1;ps 查看记录表2】;int $id主键id]     * @author  1245049149@qq.com     * @return  [type]     */    public function set_cookie_history($type,$id){        //设置初始数据        $set_limit = 5; //浏览记录的容量限制        //初始数据过滤        if(!in_array($type,['as','ps'])){            return false;        }        //获取cookie记录        $string = $type.$id;        $history_array = unserialize($_COOKIE['cookie_history']);        if(!$history_array)            $history_array = [];        //浏览记录存在        if(in_array($string,$history_array)){            unset($history_array[array_search($string , $history_array)]); //删除存在            array_unshift($history_array,$string);//重新放在第一个        //浏览记录不存在        }else{            //没有超过记录的容量限制,直接放在第一个            if(count($history_array)<$set_limit){                array_unshift($history_array,$string);            //超过记录的容量限制,删除最后一个,然后放在第一个            }else{                array_pop($history_array);                array_unshift($history_array,$string);            }        }        //将浏览数组序列化后写入cookie        $expire_time = 3600 * 24 * 30; //过期时间        $cookie_domain = $this->config->item('cookie_domain');        $history_array = serialize($history_array);        setcookie('cookie_history', $history_array, time()+$expire_time, '/', $cookie_domain);    }

  上面是实现cookie的记录功能,下面是进行读取cookie记录方法:

/**     * @desc    获取cookie浏览记录     * @date    2018-04-15 17:42:51     * @param   [type]     * @author  1245049149@qq.com     * @return  [array $return_data]     */    public function get_cookie_history(){        //设置初始返回数据        $return_data = [];        //获取cookie记录        $history_array = unserialize($_COOKIE['cookie_history']);        if(!$history_array)            return $return_data;        if($history_array){            foreach($history_array as $k=>$v){                //切割判断是否是as类型                $as_temp = explode('as',$v);                if($as_temp && $as_temp[1]){                    //这里写,你要查询的sql语句                    $sql = "select field1,field2 from table_test1 where id={$as_temp[1]}";                    $res = $this->db->query($sql)->row_array();                    if($res)                        $return_data[] = ['type' => 'as','data' => $res];                }                //切割判断是否是ps类型                $ps_temp = explode('ps',$v);                if($ps_temp && $ps_temp[1]){                    //这里写,你要查询的sql语句                    $sql = "select field1,field2 from table_test2 where id={$as_temp[1]}";                    $res = $this->db->query($sql)->row_array();                    if($res)                        $return_data[] = ['type' => 'ps','data' => $res];                }            }            return $return_data;        }        //非法获取数据,直接返回        return $return_data;    }

  欢迎留言讨论

转载于:https://www.cnblogs.com/qwgshare/p/8857244.html

你可能感兴趣的文章
老板让我十分钟上手开发vue-element-admin
查看>>
mybatis基础学习(二)
查看>>
经典SQL语句大全
查看>>
Size转换工具类
查看>>
Mac控制台的渐变色玩一下!
查看>>
【C】自己写一个程序实现memcpy功能
查看>>
java微服务 k8s生产环境搭建
查看>>
go语言入门教程百度网盘:椭圆曲线加密算法ECC和椭圆曲线数字签名算法ECDSA
查看>>
使用Nginx搭建网页服务器
查看>>
大部分程序员都在抱怨自己工资低,但是真的工资低吗?
查看>>
Android 音视频开发 - 使用Camera采集视频
查看>>
探索iOS中Block的实现原理
查看>>
记录一次线上OOM情况排查过程
查看>>
91 Decode Ways
查看>>
工作中遇到的问题
查看>>
含着泪做Swift3迁移
查看>>
微信小程序海报生成组件封装
查看>>
AI伦理无法回避的5个问题:生物进化是否有方向?
查看>>
一半人将因人工智能失业?麻省理工科学家表示太可笑!
查看>>
‘生逢其时’的文化IP该如何借力科技?_创成汇
查看>>