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

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

  • 짧은주소 : http://dreamphp.com/s/m0bofo

  • 작 성 자 : dosona

  • 조 회 수 : 210

  • 등 록 일 : 2018-02-27 19:06:18

  • ▶ 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는 해당 게시물 번호
    }
    ================================================================================
  • 2018-02-27 19:26:00

  • ArchEviL™

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

  • 2018-02-27 20:21:00

  • 공대여자

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

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

  • 2018-02-28 10:57:00

  • BiHonHomepage

  • 동일한 쿠키명을 사용하니 동일한 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

+ 이름

- 홈페이지

+ 내용

+ 비밀번호

* 4~20자

+ CAPTCHA

CAPTCHA Image [새로고침] (대소문자 무시)

  • 번호

  • 제목

  • 이름

  • 등록일

  • 조회수