검색 기록을 저장하기 위해 쿠키를 사용하는 PHP에 대한 자세한 설명

高洛峰
풀어 주다: 2016-10-20 15:19:35
원래의
1481명이 탐색했습니다.

프로젝트 작업을 할 때 일부 모듈에서 탐색 기록 목록을 사용하는 경우가 많은데 PHP에서는 탐색 기록 기능을 어떻게 구현합니까?


먼저 아이디어를 분석해보자

페이지 방문하기

저장된 검색 기록에서 상품 데이터 목록 가져오기

현재 검색한 상품이 기록에 없으면 추가하세요. , 필요하면 업데이트하겠습니다

대략적인 생각이 있으시면 코드를 직접 보시면 됩니다


전체 코드는 다음과 같습니다 :

<?php
 
//如是COOKIE 里面不为空,则往里面增加一个商品ID
if (!empty($_COOKIE[&#39;SHOP&#39;][&#39;history&#39;])){
     
    //取得COOKIE里面的值,并用逗号把它切割成一个数组
    $history = explode(&#39;,&#39;, $_COOKIE[&#39;SHOP&#39;][&#39;history&#39;]);
     
    //在这个数组的开头插入当前正在浏览的商品ID
    array_unshift($history, $id);
     
    //去除数组里重复的值
    $history = array_unique($history);
    // $arr = array (1,2,3,1,3);
    // $arr = array (1,1,2,3,3);
    // $arr = array (1,2,3);
     
    //当数组的长度大于5里循环执行里面的代码
    while (count($history) > 5){
        //将数组最后一个单元弹出,直到它的长度小于等于5为止
        array_pop($history);
    }
 
 
    //把这个数组用逗号连成一个字符串写入COOKIE,并设置其过期时间为30天
    setcookie(&#39;SHOP[history]&#39;, implode(&#39;,&#39;, $history), $cur_time + 3600 * 24 * 30);
 
}else{
    //如果COOKIE里面为空,则把当前浏览的商品ID写入COOKIE ,这个只在第一次浏览该网站时发生
    setcookie(&#39;SHOP[history]&#39;, $id, $cur_time + 3600 * 24 * 30);
}
 
//以上均为记录浏览的商品ID到COOKIE里,下面将讲到怎样用这样COOKIE里的数据
 
//取得COOKIE里的数据 ,格式为1,2,3,4 这样,当然也有可以为0
$history =isset ($_COOKIE[&#39;SHOP&#39;][&#39;history&#39;]) ? $_COOKIE[&#39;SHOP&#39;][&#39;history&#39;] : 0;
 
//写SQL语句,用IN 来查询出这些ID的商品列表
$sql_history = "SELECT * FROM `goods` WHERE `goods_id` in ({$history})";
 
 
//执行SQL语句,返回数据列表
$goods_history = $db->getAll($sql_history);
if ($goods_history) {
    $tpl->assign (&#39;goods_history&#39;,$goods_history);
}
?>
로그인 후 복사

다음은 스토리지 ID를 기준으로 제품 정보를 가져오는 mysql 작업입니다. 자신의 코드에 따라 가져올 수 있습니다. 원래 생태를 사용하거나 프레임워크의 쿼리 데이터베이스 방법을 적절하게 수정할 수 있습니다


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!