반응형
Web Development · PHP cookie
PHP 쿠키 —
브라우저에 데이터를 잠시 저장하기
방문 횟수를 쿠키에 저장 + 10초 만료
시작 오늘 분석할 코드
<?php $count = 1; if(isset($_COOKIE["count"])){ $count = $_COOKIE["count"]; $count ++; } setcookie("count", $count, time() + 10); // 10초 만료의 count 쿠키 설정 ?> <BODY> if($count == 1) → "첫 방문입니다." else → "당신의 방문은 N 번째입니다."
브라우저가 보내는 $_COOKIE에서 count를 읽고, +1해서 다시 setcookie로 갱신. 10초 안에 새로고침하면 카운트가 올라간다.
용어 용어 정리
setcookie()쿠키 설정 — 응답 헤더로 전송
$_COOKIE브라우저가 보낸 쿠키 슈퍼글로벌 배열
만료 시간setcookie 3번째 인자 — Unix timestamp
time() + 10지금부터 10초 뒤 만료
클라이언트 저장브라우저가 보관 — 매 요청 자동 첨부
vs 세션세션은 서버, 쿠키는 클라이언트
조작 가능사용자가 쿠키 값 바꿀 수 있음
출력 전 호출setcookie도 헤더라 출력 전에
1 setcookie 매개변수
setcookie(이름, 값, 만료, 경로, 도메인, secure, httponly) // ↑ ↑ ↑ // 필수 필수 Unix 타임스탬프 setcookie("count", 5, time() + 10); // 10초 후 만료 setcookie("user", "kim", time() + 86400); // 1일
2 쓰기와 읽기는 다른 시점
※
setcookie로 쓴 값은 다음 요청부터 $_COOKIE에 들어온다. 같은 요청 안에선 안 보인다.// 처음 호출 — $_COOKIE는 비어있음 $count = 1; if (isset($_COOKIE["count"])) { ... 안 들어감 ... } setcookie("count", $count, time() + 10); // 응답 헤더로 쿠키 설정 명령 전송 // 두 번째 호출 (10초 안 새로고침) // 브라우저가 count=1 쿠키 첨부 $count = $_COOKIE["count"]; // 1 $count++; // 2 setcookie("count", 2, ...); // 갱신
3 만료 시간의 의미
| 설정 | 효과 |
|---|---|
| 생략 또는 0 | 세션 쿠키 — 브라우저 닫으면 사라짐 |
time() + N |
N초 후 만료 |
time() - 1 |
이미 과거 → 쿠키 즉시 삭제 |
time() + 86400 * 30 |
30일 |
반응형
4 쿠키 vs 세션
| 관점 | 쿠키 | 세션 |
|---|---|---|
| 저장 위치 | 브라우저 | 서버 |
| 크기 제한 | 4KB 정도 | 실질 제한 적음 |
| 매 요청 전송 | O (자동) | X (세션 ID만) |
| 조작 | 가능 | 불가 |
| 지속 시간 | 설정 가능 | 기본 24분 |
| 적합 용도 | 설정·테마·트래킹 | 로그인·중요 데이터 |
5 보안 옵션
setcookie("name", $value, [ 'expires' => time() + 86400, 'path' => '/', 'secure' => true, // HTTPS에서만 전송 'httponly' => true, // JS에서 접근 불가 (XSS 방어) 'samesite' => 'Lax', // CSRF 방어 ]);
6 자주 하는 실수
· 출력 후 setcookie → 헤더 오류
· 같은 요청에서 즉시 $_COOKIE에 들어올 거라 기대
· 민감 데이터(비밀번호 등)를 쿠키에 저장 — 위험
· 만료 시간 안 지정 → 브라우저 닫으면 사라짐
· httponly 플래그 안 줘서 XSS로 쿠키 탈취 가능
· 같은 요청에서 즉시 $_COOKIE에 들어올 거라 기대
· 민감 데이터(비밀번호 등)를 쿠키에 저장 — 위험
· 만료 시간 안 지정 → 브라우저 닫으면 사라짐
· httponly 플래그 안 줘서 XSS로 쿠키 탈취 가능
핵심 한 줄 요약
setcookie()브라우저에 쿠키 저장 명령
$_COOKIE브라우저가 보낸 쿠키 읽기
만료 = time() + N초초 단위 미래 타임스탬프
출력 전 호출echo·HTML 한 글자 전에
vs 세션쿠키는 클라이언트, 세션은 서버
크기4KB 정도 — 큰 데이터는 세션
보안httponly + secure + samesite 플래그
반응형
'php' 카테고리의 다른 글
| PHP class — 클래스와 멤버변수·메서드 선언 완전 정리 (0) | 2026.06.17 |
|---|---|
| PHP session — $_SESSION으로 방문 횟수 카운트 완전 정리 (0) | 2026.06.17 |
| PHP form4 + confirm + view — 세션으로 데이터 운반 완전 정리 (0) | 2026.06.17 |
| PHP form + view — SELECT 드롭다운 처리 완전 정리 (0) | 2026.06.17 |
| PHP form + view — 라디오 버튼 단일 선택 완전 정리 (0) | 2026.06.17 |
왕진 블로그

댓글