본문 바로가기

프로그래밍/PHP

[PHP] 쿠키(cookie)를 사용해 보자.




 

 

 

 

PHP Web Prog.


처음으로 PHP를 공부하면서, 적은것이기에 다소 틀린 내용이 있을 수도 있습니다. 그리고, 다른 언어를 알고 계시다는 가정에하에 글을 적기때문에, 완전 웹프로그래밍 언어를 처음 공부하시는 분은 다른 글도 참고하시길 바랍니다.

 


 이번에는 쿠키를 저장하고, 읽어들이는 방법에 대해서 간단히 알아볼까 합니다. 


 일반적으로 쿠키를 생성하고 읽는 방법은 다음과 같습니다.

1. 쿠키생성

setcookie("쿠키명", "저장할 값", "유효시간", "유효경로", "유효호스트명", "보안접속옵션");


2. 쿠키값 읽기

$_COOKIE("쿠키명");


 쿠키생성 옵션중에는 보통 세번째나, 네번째 옵션까지 쓰일듯한데요?

세번째 유효시간을 표기하지 않을 경우, 브라우저를 닫음과 동시에 사라집니다.(기본값)

네번째 옵션인 유효경로를 설정해놓으면, 유효경로 하위의 페이지에서 쿠키가 사용되구요.

다섯번째 옵션도 비슷하게 해당 호스트에서만 쿠키가 사용됩니다.

마지막 옵션인 보안접속옵션은, 사용해보지는 않았지만, Https 보안접속인 경우에만 쿠키가 구워질 수 있도록 하는 옵션이라네요. 사용하고 싶으시면 1 이라는 값을 넣어주시면 됩니다. 


 그리고 오류없이 테스트 하기 위해선 다음을 확인해야 합니다.

1. php 페이지 저장시(UTF-8인 경우), BOM 이 없는 형태로 저장되어야 합니다. (많이 헤맸습니다. 외국사이트 뒤짐)

 - 그렇지 않으면 다음과 같이 계속 헤더가 이미 전송되었다고, 에러가 뜹니다.

Warning: Cannot modify header information - headers already sent by .....


2. setcookie는 빈공간이나 다른 문자열이 출력되기전에 선언되어야 합니다. 

 - 그렇지 않으면 계속 헤더가 이미 전송되었다고, 에러가 뜹니다.

3. 테스트는 setcookie를 선언한 페이지가 아닌 페이지에서 확인하거나 새로고침을 통해 확인을 해야 합니다.

 첫번째 사항에서 꽤 시간을 보냈는데요. naver에서는 안나오던데.. 다행히 외국 사이트에는 답변이 나와있었습니다...

다들..euc-kr로 작업하시나봐요. 한글이 안되서 BOM이 있는 형태로 저장했었는데... 아무튼 알아두시면 좋을듯 합니다 ^^


 다음과 같이 페이지를 만들고 테스트를 합니다.

<?

setcookie("test", "12");

echo $_COOKIE[test];

if(!$_COOKIE[test]){echo "no cookies";}

?>


 결과화면입니다.

12


 쿠키의 정보를 알고싶으시면, 개발자 도구를 이용하세요~