
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ์ด๊ธ
๐ PHP ์ด๊ธ - 8์ฃผ์ฐจ: ํ์ผ ์ ์ถ๋ ฅ ๋ฐ ์ฟ ํค/์ธ์ - 02 ์ฟ ํค(Cookie) ์ค์ ๋ฐ ์ฝ๊ธฐ
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-07-05 11:44:55 | |
์กฐํ์ | 48 |
๐ PHP ์ด๊ธ - 8์ฃผ์ฐจ: ํ์ผ ์ ์ถ๋ ฅ ๋ฐ ์ฟ ํค/์ธ์ - 02 ์ฟ ํค(Cookie) ์ค์ ๋ฐ ์ฝ๊ธฐ
์ด๋ฒ ์ฃผ์ฐจ์๋ #PHP์์ #ํ์ผ ์ ์ถ๋ ฅ๊ณผ ํจ๊ป #์น ๊ฐ๋ฐ์ ์ค์ํ ๊ฐ๋ ์ธ #์ฟ ํค์ #์ธ์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํนํ ์ด๋ฒ ํฌ์คํ ์์๋ #์ฟ ํค์ #์ค์ ๊ณผ #์ฝ๊ธฐ์ ์ด์ ์ ๋ง์ถฐ ์ค๋ช ํฉ๋๋ค.
์ฟ ํค(Cookie)๋?
#์ฟ ํค๋ ํด๋ผ์ด์ธํธ(#๋ธ๋ผ์ฐ์ ) ์ธก์ ์ ์ฅ๋๋ ์์ #๋ฐ์ดํฐ ์กฐ๊ฐ์ ๋๋ค. ์น ์๋ฒ๊ฐ #ํด๋ผ์ด์ธํธ์ #๋ธ๋ผ์ฐ์ ์ ํน์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ์ดํ ๊ฐ์ ์๋ฒ์ ์ ์ํ ๋ ํด๋น ์ ๋ณด๋ฅผ ๋ค์ ์ฝ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธ ์ํ ์ ์ง, ์ฅ๋ฐ๊ตฌ๋ ์ ๋ณด, ์ฌ์ฉ์ ์ค์ ๋ฑ์ ์ ์ฅํ ์ ์์ต๋๋ค.
์ฟ ํค ์ค์ ํ๊ธฐ: setcookie()
ํจ์
#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
์ ์ญ ๋ณ์
#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 ์ฟ ํค๊ฐ ์ญ์ ๋์์ต๋๋ค.";
?>
#์ฟ ํค๋ฅผ #์ค์ ํ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก #์ญ์ ํ ๋๋ ๋์ผํ #๊ฒฝ๋ก์ #๋๋ฉ์ธ(ํ์ํ๋ค๋ฉด)์ ์ง์ ํด์ผ ์ ํํ๊ฒ #์ฟ ํค๊ฐ ์ญ์ ๋ฉ๋๋ค.
์ฃผ์์ฌํญ
#HTTP ํค๋ ์ ์ก:
setcookie()
๋ #HTML ์ถ๋ ฅ์ด ์์๋๊ธฐ ์ ์ ํธ์ถ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด "Headers already sent" ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.#๋ณด์: #์ฟ ํค๋ #ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ฅ๋๋ฏ๋ก ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ง์ ์ ์ฅํ๋ ๊ฒ์ ํผํด์ผ ํฉ๋๋ค. ์ค์ํ ์ ๋ณด๋ #์ธ์ ์ ์ ์ฅํ๊ฑฐ๋ #์ํธํํด์ผ ํฉ๋๋ค. #XSS ๊ณต๊ฒฉ ๋ฐฉ์ง๋ฅผ ์ํด
httponly
์์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.#์ฉ๋ ์ ํ: #๋๋ถ๋ถ์ #๋ธ๋ผ์ฐ์ ๋ #์ฟ ํค๋น #4KB์ #์ฉ๋ ์ ํ์ด ์์ผ๋ฉฐ, #๋๋ฉ์ธ๋น #์ฟ ํค ๊ฐ์์๋ ์ ํ์ด ์์ต๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ #PHP์์ #์ฟ ํค๋ฅผ #์ค์ ํ๊ณ , #์ฝ๊ณ , #์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด์์ต๋๋ค. #์ฟ ํค๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ด์ง๋ง, #๋ณด์์ ์ ์ํ๋ฉฐ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค์ ํฌ์คํ ์์๋ #์ธ์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.