首頁  >  文章  >  後端開發  >  php怎麼實現瀏覽記錄

php怎麼實現瀏覽記錄

藏色散人
藏色散人原創
2021-11-02 09:56:412664瀏覽

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(&#39;cookie_domain&#39;);
    $history_array = serialize($history_array);
    setcookie(&#39;cookie_history&#39;, $history_array, time()+$expire_time, &#39;/&#39;, $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[&#39;cookie_history&#39;]);
    if(!$history_array)
        return $return_data;
 
    if($history_array){
        foreach($history_array as $k=>$v){
 
            //切割判断是否是as类型
            $as_temp = explode(&#39;as&#39;,$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[] = [&#39;type&#39; => &#39;as&#39;,&#39;data&#39; => $res];
            }
 
            //切割判断是否是ps类型
            $ps_temp = explode(&#39;ps&#39;,$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[] = [&#39;type&#39; => &#39;ps&#39;,&#39;data&#39; => $res];
            }
        }
        return $return_data;
    }
 
    //非法获取数据,直接返回
    return $return_data;
}

推薦學習:《PHP影片教學

以上是php怎麼實現瀏覽記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn