Maison >développement back-end >Problème PHP >Comment implémenter l'historique de navigation en php
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 ;
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('cookie_domain'); $history_array = serialize($history_array); setcookie('cookie_history', $history_array, time()+$expire_time, '/', $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['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; }
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!