php 쿠키를 사용해서 최근에 봤던 상품을 만들고있습니다. 조언부탁드립니다. > 질문&답변

본문 바로가기
사이트 내 전체검색

질문&답변

DreamPHP.com에서 다루는 내용(PHP, 프로그램, 고전)에 대해서만 질문 남겨주세요.
기타 질문은 PHP스쿨의 아래 성격에 맞는 게시판에 올리면 됩니다.
리눅스/서버/설치/설정 ,  Mysql/Oracle/Query/DB ,  PHP/함수/API/프레임웍 ,  HTML/JS/CSS/jQuery/Ajax
모바일앱/하이브리드앱 ,  ASP/JSP/기타개발관련 ,  개발을 제외한 일반질문

php 쿠키를 사용해서 최근에 봤던 상품을 만들고있습니다. 조언부탁드립니다.

페이지 정보

작성자 dosona 댓글 3건 조회 255회 작성일 18-02-27 19:06

본문

▶ PHP스쿨 > Q&A > PHP관련/함수/프레임웍 - https://phpschool.com/link/qna_function/456673

최근에 봣던 상품들을 쿠키를 이용해서 만들고있는데..
이게 사용자마다 다르게 나오게할려면 어떻게해야하는지 생각이안나고있습니다. 조언부탁드립니다..
board_no라는 key에다가 session_id + 게시물 번호를 넣고
substr로 자를까했는데 그건 게시물마다 번호도 다르고 또 사용자 계정 아이디 길이가 달라짐으로 쓸수가없더군요.. 조언부탁드려요!

[ ▼ 질문관련 참고 Source ]
================================================================================
if ($_COOKIE['board_no'])
{
    $temp = explode(",",$_COOKIE['board_no']);
    if (!in_array($no,$temp))
    {
        setcookie('board_no',$_COOKIE['board_no'].','.$no,0);
    }
}
// 쿠키<'board_no'>에 값이 없을때
else
{
    //board_no에 저장
    setcookie('board_no',$no,0);
  //$no는 해당 게시물 번호
}
================================================================================

댓글목록

ArchEviL™님의 댓글

ArchEviL™ 작성일

$_COOKIE 대신 $_SESSION을 쓰면 됩니다.
세션을 쓰기 때문에 setcookie() 또한 없어집니다.

공대여자님의 댓글

공대여자 작성일

IE7 지원을 안해도 된다면
https://developer.mozilla.org/ko/docs/Web/API/Window/localStorage
이걸 쓰는게 좋음

쿠키가 커지면 그만큼 통신 부하가 됨.

BiHon님의 댓글

BiHon 작성일

동일한 쿠키명을 사용하니 동일한 PC에서 다른 사용자가 로그인하면
같은 최근에 봤던 상품을 공유해서 꽝!
즉! "쿠키명"을 고유하게 지정하면 해결됩니다.

$cookie_name = 'user_id';
setcookie($cookie_name, '값', …);


아이디 등의 정보 노출이 꺼려지면 간단하게 아래처럼 처리하는 방법도 있습니다.

$cookie_name = md5('user_id'.$_SERVER['HTTP_HOST']); // 지정 나름. 구현 나름.


구분자를 ,가 아닌 _ 등으로 바꿔주면 쿠키 값의 길이가 줄어듭니다. (, => %2C)
줄어든 만큼 내용을 더 기록할 수 있지요.
10진수를 16진수로 바꿔 저장하는 방법도 유용합니다.

그리고, 무작정 번호를 뒤쪽에 추가해주는 것보다 제한을 걸어주면 좋습니다. 부담 저하!
최근에 본 상품 순으로 20개만 담겠다면
$temp = array_slice($배열, -20); 처럼 구할 수 있습니다.

* 세션으로 하려면 유지가 관건이겠군요. 이 부분은 생략….
* 로컬 스토리지를 사용한다고 해도, 회원을 구분지을 수 있는 이름으로!

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

올릴까 말까 하다 뒤늦게 올립니다. 참고용!
- http://dreamphp.com/s/a0ef

회원로그인


Copyright © 1998~2019 DreamPHP.com All rights reserved.