루젠소프트 로고

216.73.216.41 TODAY : 1,420

PHP 강의

 > 

PHP - 초급

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 02 쿠키(Cookie) 설정 및 읽기

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 02 쿠키(Cookie) 설정 및 읽기
평점 10.0 라이센스 free
사용자평점 10.0 운영체제
다운로드 1 파일크기 0
제작사 LUZENSOFT 등록일 2025-07-05 11:44:55
조회수 3
- 설명

📚 PHP 초급 - 8주차: 파일 입출력 및 쿠키/세션 - 02 쿠키(Cookie) 설정 및 읽기





이번 주차에는 #PHP에서 #파일 입출력과 함께 #웹 개발의 중요한 개념인 #쿠키와 #세션에 대해 알아보겠습니다. 특히 이번 포스팅에서는 #쿠키의 #설정과 #읽기에 초점을 맞춰 설명합니다.







쿠키(Cookie)란?

uploadImage



#쿠키는 클라이언트(#브라우저) 측에 저장되는 작은 #데이터 조각입니다. 웹 서버가 #클라이언트의 #브라우저에 특정 정보를 저장하고, 이후 같은 서버에 접속할 때 해당 정보를 다시 읽어 사용자 경험을 개선하는 데 사용됩니다. 예를 들어, 로그인 상태 유지, 장바구니 정보, 사용자 설정 등을 저장할 수 있습니다.







쿠키 설정하기: setcookie() 함수


uploadImage


#PHP에서 #쿠키를 설정하려면 setcookie() 함수를 사용합니다. 이 함수는 #HTTP 헤더를 통해 #클라이언트에 #쿠키를 전송합니다. 따라서 setcookie() 함수는 어떤 #HTML 출력보다도 먼저 호출되어야 합니다.



PHP

<?php
// 쿠키 설정하기
// setcookie(name, value, expire, path, domain, secure, httponly);

// 1. 가장 기본적인 쿠키 설정 (세션 쿠키)
setcookie("username", "JohnDoe");
echo "username 쿠키가 설정되었습니다.";
?>



위 예시는 username이라는 #이름으로 JohnDoe라는 #값의 #쿠키를 설정합니다. 이 #쿠키는 #브라우저가 닫히면 사라지는 #세션 #쿠키입니다.




setcookie() 함수의 주요 매개변수




  • name: #쿠키의 #이름입니다. (필수)

  • value: #쿠키에 저장할 #값입니다. (필수)

  • expire: #쿠키의 #만료 시간입니다. #UNIX 타임스탬프 형식으로 지정하며, 이 시간을 지나면 #쿠키는 자동으로 삭제됩니다. 설정하지 않으면 #세션 #쿠키가 됩니다.

  • path: #쿠키가 유효한 #서버 경로입니다. /로 설정하면 #도메인 전체에서 유효합니다.

  • domain: #쿠키가 유효한 #도메인입니다.

  • secure: true로 설정하면 #HTTPS 연결에서만 #쿠키가 전송됩니다.

  • httponly: true로 설정하면 #JavaScript를 통해 #쿠키에 접근할 수 없게 하여 #XSS 공격을 방지합니다.



PHP

<?php
// 만료 시간을 설정한 쿠키
$expire_time = time() + (60 * 60 * 24 * 7); // 7일 후 만료
setcookie("user_id", "user123", $expire_time, "/"); // 도메인 전체에서 유효

// HTTPS에서만 전송되는 보안 쿠키
setcookie("secure_data", " confidential", $expire_time, "/", "", true, true);
echo "user_id 및 secure_data 쿠키가 설정되었습니다.";
?>







쿠키 읽기: $_COOKIE 전역 변수

uploadImage



#PHP에서 설정된 #쿠키의 #값은 $_COOKIE라는 #전역 #연관 #배열을 통해 읽을 수 있습니다. 이 #배열은 #클라이언트로부터 전송된 모든 #쿠키 #데이터를 포함합니다.



PHP

<?php
// 이전에 설정한 쿠키 값 읽기
if (isset($_COOKIE["username"])) {
    $username = $_COOKIE["username"];
    echo "환영합니다, " . $username . "님!";
} else {
    echo "username 쿠키가 설정되어 있지 않습니다.";
}

echo "<br>";

if (isset($_COOKIE["user_id"])) {
    $user_id = $_COOKIE["user_id"];
    echo "회원 ID: " . $user_id;
} else {
    echo "user_id 쿠키가 설정되어 있지 않습니다.";
}
?>



isset() 함수를 사용하여 해당 #쿠키가 존재하는지 먼저 확인하는 것이 중요합니다. 존재하지 않는 #쿠키에 접근하려고 하면 #PHP #경고가 발생할 수 있습니다.







쿠키 삭제하기




#쿠키를 #삭제하려면 setcookie() 함수를 사용하여 #만료 시간을 현재보다 이전으로 설정하면 됩니다. #브라우저는 #만료된 #쿠키를 자동으로 삭제합니다.



PHP

<?php
// 쿠키 삭제하기
setcookie("username", "", time() - 3600); // 현재 시간보다 1시간 이전으로 설정
echo "username 쿠키가 삭제되었습니다.";

echo "<br>";

setcookie("user_id", "", time() - 3600, "/"); // 경로를 함께 지정해야 합니다.
echo "user_id 쿠키가 삭제되었습니다.";
?>



#쿠키를 #설정할 때와 마찬가지로 #삭제할 때도 동일한 #경로와 #도메인(필요하다면)을 지정해야 정확하게 #쿠키가 삭제됩니다.







주의사항


uploadImage


  • #HTTP 헤더 전송: setcookie()는 #HTML 출력이 시작되기 전에 호출되어야 합니다. 그렇지 않으면 "Headers already sent" 오류가 발생할 수 있습니다.

  • #보안: #쿠키는 #클라이언트 측에 저장되므로 민감한 정보를 직접 저장하는 것은 피해야 합니다. 중요한 정보는 #세션에 저장하거나 #암호화해야 합니다. #XSS 공격 방지를 위해 httponly 속성을 사용하는 것이 좋습니다.

  • #용량 제한: #대부분의 #브라우저는 #쿠키당 #4KB의 #용량 제한이 있으며, #도메인당 #쿠키 개수에도 제한이 있습니다.






이번 포스팅에서는 #PHP에서 #쿠키를 #설정하고, #읽고, #삭제하는 방법에 대해 자세히 알아보았습니다. #쿠키는 사용자 경험을 향상시키는 데 매우 유용한 도구이지만, #보안에 유의하며 사용해야 합니다. 다음 포스팅에서는 #세션에 대해 알아보겠습니다.