Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP $_COOKIE 완벽 가이드: setcookie()로 쿠키 설정·조회·삭제하기

PHP $_COOKIE란?

슈퍼글로벌(superglobal) 변수 $_COOKIE는 현재 실행 중인 스크립트로 HTTP 요청과 함께 전달된 쿠키 형태의 변수들을 담고 있는 연관 배열입니다. 예전에 사용되던 $HTTP_COOKIE_VARS도 동일한 정보를 포함하지만, 슈퍼글로벌이 아니며 현재는 공식적으로 폐기(deprecated)된 상태이므로 더 이상 사용해서는 안 됩니다.

쿠키(Cookie)란 무엇인가?

쿠키는 웹 서버가 사용자(클라이언트)의 컴퓨터에 저장해 두는 작은 텍스트 파일로, 주로 로그인 상태 유지, 사용자 환경설정 저장, 방문 기록 추적 등의 목적으로 활용됩니다. PHP는 HTTP 쿠키를 별도의 설정 없이도 투명하게 지원합니다.

쿠키는 일반적으로 HTTP 헤더를 통해 설정되며, JavaScript를 사용해 브라우저에서 직접 생성할 수도 있습니다.

동작 방식은 다음과 같습니다. 먼저 서버 스크립트가 브라우저로 쿠키를 전송하면, 브라우저는 이 정보를 로컬 머신에 저장해 둡니다. 이후 브라우저가 같은 웹 서버에 요청을 보낼 때마다 저장된 쿠키 정보가 함께 전송되고, 서버는 이를 통해 사용자를 식별합니다.

PHP에서는 setcookie() 함수를 사용해 HTTP 응답과 함께 클라이언트로 전송할 쿠키를 생성합니다.

setcookie() 함수 문법

setcookie(name, value, expire, path, domain, security);

매개변수 설명

  • name – 저장할 쿠키의 이름입니다.
  • value – 쿠키 이름에 해당하는 변수에 설정할 값입니다.
  • expire – 쿠키의 만료 시간으로, 1970년 1월 1일 00:00:00 GMT(Unix 타임스탬프)를 기준으로 하는 미래 시점을 초 단위로 지정합니다.
  • path – 쿠키가 유효한 디렉터리 범위를 지정합니다.
  • domain – 여러 하위 도메인을 가진 큰 도메인에서 쿠키가 적용될 도메인 이름을 지정합니다.
  • security – 보안 연결 여부로, HTTPS에서만 쿠키를 전송하려면 1, 일반 HTTP는 기본값 0을 사용합니다.

쿠키 설정 예제

다음 예제는 'username' 쿠키가 이미 존재하는지 확인한 뒤, 없으면 새로 설정하는 코드입니다.

<?php
if (isset($_COOKIE['username'])) {
    echo "<h2>쿠키가 이미 설정되어 있습니다. 값: " . $_COOKIE['username'] . "</h2>";
} else {
    setcookie("username", "Anil");
    echo "<h2>쿠키가 새로 설정되었습니다</h2>";
}
?>

쿠키 조회 예제

클라이언트가 사이트를 다시 방문하면 저장된 쿠키 값을 다음과 같이 확인할 수 있습니다.

<?php
$arr = $_COOKIE;
foreach ($arr as $key => $val) {
    echo "<h2>$key => $val</h2>";
}
?>

출력 결과

브라우저에는 아래와 유사한 결과가 표시됩니다.

username => Anil

쿠키 삭제 방법

쿠키를 삭제하려면 이미 지난 과거 시간을 만료 시간으로 지정하여 같은 이름의 쿠키를 다시 설정하면 됩니다.

setcookie("username", "", time() - 3600);

만료 시간을 현재 시점보다 이전으로 설정하면 브라우저는 해당 쿠키를 즉시 제거합니다.