먼저 쿠키가 무엇인지 살펴볼까요?
쿠키는 사용자를 식별하거나 일부 데이터를 저장하기 위해 서버가 클라이언트에 남겨둔 작은 파일입니다. (세션은 서버 측에 저장된다는 점이 둘의 차이점 중 하나입니다.) 우리가 일반적으로 포털에 로그인할 때 "로그인 저장" 또는 "다음번 자동 로그인" 옵션이 있습니다. 이를 확인하면 서버는 우리의 정보를 저장하기 위해 브라우저에 쿠키 파일을 생성합니다. 컴퓨터가 브라우저를 통해 페이지를 요청할 때마다 동시에 쿠키를 보냅니다. PHP를 사용하면 쿠키 값을 생성하고 검색할 수 있습니다. 쿠키는 웹에서 매우 중요한 역할을 합니다. 쿠키는 Netscape 브라우저 초기에 만들어졌습니다. 쿠키는 사용자 인증 시스템에서 자주 사용됩니다.
1. 쿠키 만들기
setcookie() 함수는 PHP에서 쿠키를 생성할 수 있습니다. 쿠키는 HTTP 헤더 부분의 내용이므로 데이터를 출력하기 전에 setcookie()를 호출해야 합니다. 이 제한은 다음과 같이 정의된 header()와 유사합니다.
bool setcookie( 문자열 이름[,문자열 값][,int 만료][,문자열 경로][,문자열 도메인][,bool 보안][,bool httponly])
매개변수가 너무 많아요! Σ(∨▼"a 걱정하지 마세요. 각 매개변수의 기능을 살펴보겠습니다.
name : 필수이며 쿠키의 이름을 나타냅니다.
value: 선택 사항이며 클라이언트에 저장된 쿠키 값을 나타냅니다. 비어 있으면 클라이언트에서 쿠키 정보를 취소하는 것을 의미합니다(이렇게 하면 쿠키가 삭제될 수 있음).
만료: 선택 사항이며 쿠키의 만료 시간을 나타냅니다. 만료 시간은 지정되지 않거나 0으로 지정되는 경우 일반적으로 브라우저가 닫힐 때 만료됩니다.
경로: 선택 사항이며 유효한 쿠키 경로입니다.
domain: 선택사항, 쿠키에 유효한 도메인 이름입니다.
secure: HTTPS 보안 전송 시에만 유효함을 나타냅니다.
예(이름이 test이고 값이 China인 쿠키 생성):
<?php setcookie("test",China"); ?>
setcookie()를 사용하여 제공되는 값은 숫자 또는 문자열만 가능하며 다른 복잡한 구조는 허용되지 않습니다.
쿠키 받기
쿠키를 생성한 후 사전 정의된 변수 $_COOKIE를 사용하여 쿠키를 얻을 수 있습니다. 그러나 쿠키는 다른 페이지에서만 얻을 수 있습니다. 왜냐하면 PHP에서는 페이지를 새로 고치지 않으면 설정된 쿠키가 이 페이지에 적용되지 않기 때문입니다.
예:
<?php setcookie("test","China"); echo "cookie is ".$_COOKIE["test"]; ?>
여기서 페이지를 새로 고쳐야 하는 이유는 setcookie()를 호출한 후 바로 쿠키의 값이 C OOKIE 변수에 저장되지 않고 http 요청과 함께 서버로 전송된 후 그 값이 C OOKIE 변수에 저장되기 때문입니다. 쿠키 값은 COOKIE 변수에 표시되지만 http 요청이 서버로 전송되면 쿠키 값이 _COOKIE에 표시됩니다. (블로그 파크는 달러 기호를 지원하지 않는 걸까요...아아아아아)
3. 쿠키 유효기간
쿠키에는 쿠키가 유효한 기간인 수명 주기가 있습니다. 세 번째 매개변수를 설정하여 유효 시간을 설정할 수 있습니다.
예(쿠키 유효 시간을 설정하는 여러 가지 방법):
setcookie("cookie_one","A",time()+60*60); //cookie在一小时后失效 setcookie("cookie_two","B",time()+60*60*24); //cookie在一天后失效 setcookie("cookie_three","C",mktime(23,53,19,10,09,2020)); //cookie在2020年10月9日23时53分19秒失效 setcookie("cookie_four","D"); //关闭浏览器后cookie失效
4. 유효한 쿠키 경로
쿠키 내의 경로는 설정된 쿠키가 유효한 경로를 제어하는 데 사용됩니다. 기본값은 '/'이며, 이는 모든 경로에서 유효합니다. 즉, 전체 서버 도메인 이름에서 유효합니다. 다른 경로가 설정되어 있으면 설정된 경로와 하위 경로에서만 유효합니다. 예:
setcookie('test', time(), 0, '/path')
위 설정을 사용하면 /path 및 하위 경로 /path/abc에서 test가 유효하게 되지만 루트 디렉터리에서는 test의 쿠키 값을 읽을 수 없습니다.
일반적인 상황에서는 대부분의 경로가 사용됩니다. 특별한 요구가 있는 경우에만 경로가 설정됩니다. 이 경우 쿠키 값은 데이터를 저장할 수 있는 지정된 경로에서만 전달됩니다. 보안을 강화하고 성능을 향상시킵니다.
5. 쿠키 삭제
쿠키 삭제는 비교적 간단하며 setcookie()를 통해서도 수행됩니다(unset()을 사용하지 마세요!!!). 다음 코드는 간단한 예입니다. setcookie("test","");
두 번째 매개변수를 공백으로 설정하여 쿠키를 삭제합니다. 쿠키를 설정할 때 쿠키에 대한 특정 값을 제공하는 경우 PHP가 쿠키를 올바르게 삭제할 수 있도록 쿠키를 삭제할 때 해당 매개변수를 제공해야 합니다.