쿠키 > PHP

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

PHP

쿠키

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 5,890회 작성일 20-09-18 09:47

본문

setcookie (쿠키명, 쿠키값, 만료시간, 경로, 도메인, 보안, httponly);

쿠키명(필수) : 설정 될 쿠키 이름을 결정함
 쿠키값(선택) : 쿠키 이름에 입력될 값
 만료시간(선택) : Default 값은 0이며 쿠키가 유지될 시간을 설정
 경로(선택) : 경로를 지정할 경우 특정 위치와 하위 경로에서만 사용가능하도록 설정됨
 슬러쉬(/) : 슬러쉬 기호를 값으로 입력할 경우 전체 경로에서 사용됨을 의미
 도메인(선택) : 사용될 도메인을 지정가능함. 서브도메인 입력시 해당 서브도메인만 사용가능
 보안(선택) : 보안 프로토콜인 https에서만 사용가능하도록 설정함
httponly : HTTP에서만 사용가능하도록 하여(서버단 언어로만...) 스크립트에 의한 쿠키 접근을 허용안하게 함.

위 값에서 만료시간은 초단위로 추가해주면됩니다. 예를 들어 현재시간에서 한시간 또는 하루 뒤에 쿠키값을 만료할 경우 만료시간에 아래와 같이 입력해 사용할 수 있습니다.


i. 한시간 : 60 * 60 = 3,600 이므로 아래와 같이 설정 가능합니다.
  time() + 3600 // 한시간을 쿠키값으로 설정

ii. 하루 (24시간) : 60 * 60 * 24 = 86,400이므로 아래와 같이 설정 가능합니다.
  time() + 86400 // 24시간, 하루를 쿠키값으로 설정


! 쿠키함수 setCookie() 예제보기
 아래 예제는 쿠키함수에 실제 원하는 쿠키 시간을 설정한 예제입니다. 예제에서는 한 시간 그리고 한달 예제 코드입니다.<?php
 setcookie('쿠키명', '쿠키값', time() + 3600);
 // 1시간 뒤에 만료될 쿠키값 설정하기


setcookie('쿠키명', '쿠키값', time() + 86400 * 30);
 // 한달 뒤에 만료될 쿠키값 설정하기, 하루 86400 * 30(한달 30일 기준)
 ?>
그렇다면 쿠키값을 새롭게 업데이트하거나 읽어올 경우 어떻게 할까요? 이 경우 $_COOKIE['쿠키명']을 사용합니다. 그럼 아래 예제를 확인해보세요. 만약 testCookie라는 쿠키값이 설정된 경우 설정된 값을 확인하는 방법입니다.
  <?php
 echo $_COOKIE['testCookie'];
 // 쿠키명 testCookie의 설정 값 출력하기
?>


 !! 쿠키값 삭제 또는 만료하기
 사용되는 쿠기값을 중단시키기 위해 삭제 및 만료하는 방법입니다. 똑같은 setcookie() 함수를 사용하되 해당 쿠키명의 시간에 마이너스값을 입력하거나 unset() 함수를 사용하여 쿠키를 삭제 및 중단 되도록 바꿉니다.

 # 쿠키값 삭제 예제보기
 아래는 testCookie라는 값을 삭제하는 예제코드입니다. 아래의 두 가지 방법 모두 동일하게 동작하여 쿠키값을 제거합니다.
  <?php
 unset($_COOKIE["yourcookie"]);
 setcookie('testCookie', '', time() - 1);

 // 쿠키명 'testCookie'가 사용불가, 만료됨
?>

참고로, 뒤에 설정한 -1보다 마이너스 값이 더 크면 삭제됩니다. -1000 역시 값을 삭제하는 건 동일합니다.



 !!! 쿠키 설정 에러 setcookie() 정상동작 안하는 경우
 만약 setcookie()로 설정하였으나 정상적으로 동작하지 않을 경우 확인할 사항은 아래 두 가지를 확인해보세요. 대체적으로 아래 이슈를 해결시 쿠키 사용이 가능합니다.

첫째, setcookie() 설정 이전에 HTTP 방식이 아닌 browser 상에서 출력이 있어는지 확인
 다시 말해, echo문이나 다른 것을 통해 어떤식으로는 setcookie() 함수 이전에 화면에 출력이 있으면 안됩니다! 출력이 있는 경우 쿠키 사용이 불가능합니다.

두번째, setcookie()의 경로설정이 되어 있는지 확인
 예를 들어 쿠키를 설정하는 위치가 '/a/b/'인 경우 '/a/' 경로에서는 쿠키 사용이 가능하지 않을 수 있습니다. 즉, 쿠키를 설정한 현재 페이지의 reference를 참고한다는 것입니다. 제 경우 setcookie() 뒤의 매게변수의 경로값에 '/'를 설정한 이후 정상동작하였습니다.

 [출처] [PHP] 쿠키 설정하기, Setcookie()|작성자 HyungMin

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

Copyright © neion.co.kr All rights reserved.