Fogeaters, Light The World.

01

2017-Aug

[php] 쿠키 사용하기

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1741

출처::http://webisfree.com/blog/?titlequery=php-%EC%BF%A0%ED%82%A4-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0--setcookie-



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() 뒤의 매게변수의 경로값에 '/'를 설정한 이후 정상동작하였습니다.

profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
91 [web] 제로보드처럼 url 줄이기 + 1 title: MoonBlonix 2017-08-04 1655
90 [php] 환경변수 $_SERVER title: MoonBlonix 2017-08-04 1686
89 [mysql] 테이블 수정 title: MoonBlonix 2017-08-04 1613
88 [Javascript] 섬세한 뒤로가기 구현 title: MoonBlonix 2017-08-01 1496
» [php] 쿠키 사용하기 title: MoonBlonix 2017-08-01 1741
86 [javascript] POST 전송하기 title: MoonBlonix 2017-07-31 1605
85 [Web]다국적 웹사이트 제작 title: MoonBlonix 2017-07-27 1926
84 [php] 5 -> 7 변경점 정리 title: MoonBlonix 2017-07-23 1342
83 [php/mysqli] 설치 및 연동 + 2 title: MoonBlonix 2017-07-23 1691
82 [MySQL] 설치 및 기초명령어 title: MoonBlonix 2017-07-19 1008
81 [Web] JQuery 설치 title: MoonBlonix 2017-07-04 1673
80 [CSS] Toggle Switch Examples title: MoonBlonix 2017-07-01 1832
79 [CSS] Input Text Styles title: MoonBlonix 2017-07-01 1691
78 [Web] CSS 프론트엔드 워크프레임 소개 title: MoonBlonix 2017-06-25 1443
77 [C++] 코딩시 좋은 습관들 : 스타일 title: MoonBlonix 2017-06-11 1575
76 [PHP] 강좌 모음 + 1 title: MoonBlonix 2017-06-08 1907
75 [Arduino] 아두이노로 GPS(위치) 추적기(GPS Tracker)를 만들어 보았다 + 1 2N 2017-03-06 1424
74 [AI]딥러닝 공부 가이드 (SW 준비편) title: MoonBlonix 2017-01-15 1501
73 [C++ STL] std::vector + 2 title: MoonBlonix 2016-12-14 1737