Maison >développement back-end >Problème PHP >Comment implémenter l'historique de navigation en php

Comment implémenter l'historique de navigation en php

藏色散人
藏色散人original
2021-11-02 09:56:412730parcourir

Comment implémenter les enregistrements de navigation en PHP : 1. Définir les données initiales ; 2. Obtenir les enregistrements de cookies ; 3. Déterminer si les enregistrements de navigation existent ; 4. Sérialiser le tableau de navigation et l'écrire dans les cookies ;

Comment implémenter l'historique de navigation en php

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Comment réaliser l'historique de navigation en php ?

PHP implémente des enregistrements de navigation historiques

En fait, le principe est très simple, qui consiste à utiliser des cookies pour réaliser l'enregistrement. Le point auquel il faut prêter attention est de définir la durée du cookie et la durée d'enregistrement que vous devez enregistrer. Voici les bases de la mise en œuvre du cadre ci

Si vous avez de meilleures idées de mise en œuvre, veuillez commenter et discuter.

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

 Ce qui précède consiste à implémenter la fonction d'enregistrement des cookies, et voici la méthode pour lire l'enregistrement du 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;
}

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn