쿠키라는것....많이 들어보셨으리라 생각되는데;;; navyism@php메뉴의 위에 보면 모노로그가 있죠.....
엇;; 그런데 이름쓰는 란이 없습니다. -_-a;;;
그런데 내용을 쓰고 나면...글쓴이 이름이 찍히죠......오로;;;
또 왜 이런게 있습니다....
투표같은걸 하고 한번 더 할라고 그러면 안되죠-_-a
쿠키라는 놈이 그 비밀입니다....
쿠키는 방문자(클라이언트)의 컴터 하드에 저장되는 인증 방법입니다.
세션이란게 있는데 이것은 서버에 저장되는 것이죠;
암튼...모노로그의 경우에서는 미리 사용자 이름을 받아서 쿠키로 사용자의 컴터에 이사람 이름은 뭐다.....라고 저장해 놓은거죠...
누가? -_,-제가;;;
그랬다가...글이 쓰여질때 그 쿠키를 샤샥 꺼내와서 이름을 찍어 주는것입니다.
쿠키는 간단하게.......쿠키의 이름과 쿠키의 값으로 이루어 집니다..
그러니까 변수랑 똑같은거죠....;;
SetCookie(이름,값,시간);
가장 간단한 쿠키 설정 방법 입니다.
예제를 볼까요?...
<?
setcookie("login","ID",0);
?>
이름에 login이라 주고 값에 ID를...그리고 시간은 0으로 주었습니다.
실행을 하면 login이라는 쿠키가 만들어 지죠...그리고 그 login이라는 쿠키에 ID라는 값이 들어가고 시간이 0이라는 얘기는 브라우져를 종료 하면 쿠키가 사라져 버린다는 것입니다.
보통 사이트에서 로그인을 하고 브라우져를 닫으면 다시 로그인을 해야 하죠? -.- 그거랑 같은겁니다...
암튼...다음소스를 보죠;;
<?
echo "쿠키굽기";
setcookie("login","ID",0);
?>
실행하면?..............
-.- 에러납니다..
cookie는 서버에서 HTTP프로토콜을 이용하는 header정보에 해당하기 때문에 cookie를 설정하는 소스앞에 화면에 표시되는 어떠한 소스도 올수 없습니다.... 그러니까 앞에 echo문이 있으면 화면에 "쿠키굽기"라는 문자가 찍히기 때문에 에러가 납니다.
이렇게 수정해야죠;;
<?
setcookie("login","ID",0);
echo "쿠키굽기";
?>
저도 첨엔 이게 뭔상관이길래;;;; 했는데....
뭐 하다보니.....그냥 그러려니 하고 삽니다.....
그러려니 하세요.....우리가 뭔 힘이 있나요;;;
자 그럼 다른 예제를 보죠;;
<?
setcookie("login","ID",3600);
?>
시간에 3600을 넣었네요...이건 현재 시간으로 부터 3600초 동안 지속된다는 것이죠....브라우져를 닫아버리건...컴터를 끄건 간에... 3600초 동안 쿠키는 남아있습니다.
보통 투표같은곳엔 이렇게 사용을 하겠죠...
그럼 1년동안 쿠키를 남기려면?
365일x24시간x60분x60초.....
즉.....365*24*60*60 으로 주시면 되죠...
그럼 이제 쿠키를 가져오는 방법 입니다.
그냥 간단히 쿠키이름을 변수로 해서 가져와도 된다죠...볼까요?
<?
echo $login;
?>
이렇게 하면 login이란 쿠키의 값이 찍힙니다...
그러니까 ID라고 찍히겠죠...
그런데 이런 방법은 보안상으로 심각한 문제가 있습니다.
예를 들어 이 문서를 test.php라고 한다면...
주소창에.......
if문을 보면 login이라는 쿠키가 존재하고....
그 값이 ID일때 실행문을 실행하는것입니다.
그러니까 제대로 쿠키인증을 받았다면 실행이 되는것이겠죠...
그럼 로그아웃은 어떻게 해야 할까요?...
쿠키의 값을 0으로 주어서 쿠키를 구워주면 됩니다.
setcookie("login",0,0);
이렇게 해주면 login이라는 쿠키의 값이 없어지기 때문에 로그아웃이 되는거겠죠......
쿠키를 주는 setcookie라는 함수에는 몇가지 요소가 더 들어갑니다...
setcookie(쿠키이름,쿠키값,적용시간,적용할디렉토리,호스트이름,보안사용);
이렇게 들어가는데.....뒤에 값들은...그다지 -_-a;;;;
따로 공부를 더 하시는게 좋을것 같네요;;;
쿠키란게 상당히 어렵고 복잡한것 같지만...
일단 이해를 하고 나면....엄청 간단하고 편리한 것이죠;;;
그리고 쿠키를 너무 남발하지 않는게 좋을듯하네요..
php에서는 쿠키남발을 막기 위해 쿠키갯수가 제한이 되어있다고 하네요.. 또 기존의 쿠키가 이유없이 날아가 버리기도 한답니다...
또 서버의 php버전에 따라서 쿠키가 잘 안먹는 경우도 있으며...
공부하시면서..또는 작업하시면서...알수없는 에러를 많이 만나시게 될겁니다...