• 技术文章 >后端开发 >PHP问题

    php怎么实现浏览记录

    藏色散人藏色散人2021-11-02 09:56:41原创998

    php实现浏览记录的方法:1、设置初始数据;2、获取cookie记录;3、判断浏览记录是否存在;4、将浏览数组序列化后写入cookie;5、读取cookie记录即可。

    php入门到就业线上直播课:进入学习

    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

    php怎么实现浏览记录?

    php实现历史浏览记录

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

    如有更加好的思路实现,欢迎评论讨论。

    /**
     * @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;
    }

    推荐学习:《PHP视频教程

    以上就是php怎么实现浏览记录的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:php怎么实现返回不刷新页面 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• php怎么判断是不是手机浏览器• php浏览器怎么显示错误提示• php怎么实现每个ip每天几次浏览• php怎么实现浏览器地址栏字符串转化数组
    1/1

    PHP中文网