216.73.216.34 TODAY : 207

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ดˆ๊ธ‰

๐Ÿ“š PHP ์ดˆ๊ธ‰ - 8์ฃผ์ฐจ: ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๋ฐ ์ฟ ํ‚ค/์„ธ์…˜ - 02 ์ฟ ํ‚ค(Cookie) ์„ค์ • ๋ฐ ์ฝ๊ธฐ

๐Ÿ“š 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)๋ž€?

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์—์„œ #์ฟ ํ‚ค๋ฅผ #์„ค์ •ํ•˜๊ณ , #์ฝ๊ณ , #์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. #์ฟ ํ‚ค๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•œ ๋„๊ตฌ์ด์ง€๋งŒ, #๋ณด์•ˆ์— ์œ ์˜ํ•˜๋ฉฐ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” #์„ธ์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.