웹마스터 팁

쿠키(cookie)의 활용

2000.03.06 22:35

zero

쿠키가 몬지 아시죠? (먹는 거라구 말하믄 미버할겁니다... ㅡ.ㅡ;)

쿠키는 아시다시피 넷스케이프사에서 만든 웹서버와 클라이언트간의 인증법이라고 생각하시면 됩니다.

(쩝... 저는 용어 설명에 댑따 서툽니당... 이해해주시길..)

보통 로그인 같은 방법을 사용할때 쿠키를 사용합니다.

즉, 사용자가 ID랑 암호를 입력하면 서버에서는 그 정보가 맞는지를 판단, 맞는다면 사용자의 컴퓨터에 쿠키를 이용해서 임시로 자료를 저장하는겁니다.

그 자료를 이용해서 지금 서버에 접속해 있는 사용자가 로그인을 정식으로 한 사용자인지 판단할수가 있죠.

그럼 실질적으로 사용하는 방법을 알아봅시다.

SetCookie() 라는 함수를 이용하면 됩니다.

setcookie(이름, 값, 해제시간, 디렉토리)

그럼 이제 하나하나 알아볼까요?

당근 이름은 쿠키값의 이름입니다.

정하기 나름이죠.

값또한 마찬가지이겠죠?

중요한 해제시간이 모냐면 쿠키가 살아있는 시간을 지정하는 겁니다.

이때 time()라는 함수를 이용합니다.

time()는 현재 시간을 알려주는 함수입니다.

만약 쿠키값에 time()+3600 이라고 하면 현재시간에서 1시간을 더한겁니다.

즉 쿠키가 유용한 시간은 1시간인거죠.

만약 쿠키시간을 따로 안정하고 브라우저를 종료할때까지 유용하게 할라면 "" 를 입력하면 됩니다.

그럼 브라우저를 종료함과 동시에 해당 쿠키값은 사라지죠.

저기 3600은 초로 계산을 하는 겁니다.

그럼 그 뒤에 디렉토리는 서버의 어떤 디렉토리에 있을때 그 쿠키값이 유용한지를 아는 것입니다.

보통은 사용할 필요가 없지만 자신의 계정 전체 디렉토리에서 쿠키를 사용하기를 원할때는 "/" 를 넣어주면 됩니다.

그럼 실제로 한번 해볼까요?

setcookie("user_id", $id, "", "/");

위의 사용예는 user_id 라는 쿠키를 $id가 가지고 있는 값으로 생성하는 거죠.

시간은 브라우저를 닫을때까지 유용하고 현재 자신의 계정의 전체 디렉토리에 적용을 하는 겁니다.

setcookie("log_in", "ok", "time()+60");

만약 위와 같이 사용하면 log_in 이라는 쿠키를 "ok" 라는 값을 넣구, 1분간의 시간을 주는 겂니다.

그럼 이 쿠키를 직접 사용할때는 어떻게 할까요?

바로 $HTTP_COOKIE_VARS 라는 환경변수를 사용하면 됩니다.

이 변수는 사용자가 설정하는 것이 아니라 PHP에서 제공하는 함수입니다.

현재 디렉토리에 적합한 살아(?)있는 쿠키를 저장하고 있는 변수입니다.

$HTTP_COOKIE_VARS[lon_in] 이라고 하면 "ok"의 값을 가지고 있죠.

쿠키라는 생소한 이름에 비하면 사용하기가 매우 쉽습니다.

참, 만약에 어떤 함수내에서 쿠키값을 알고자 한다면 꼭 $HTTP_COOKIE_VARS를 전역 변수로 지정을 해줘야 합니다.

function test()
{
global $HTTP_COOKIE_VARS;

if($HTTP_COOKIE_VARS[user_id]=="zero"){ ... }
}

위와 같이 하면 되죠.

다른 변수들도 마찬가지로 함수안에서 외부의 변수를 쓰고자 하면 global 로 지정을 해준 다음 써야해요~~

이상 쿠키 끝~~