수색…
소개
HTTP 쿠키는 사용자가 브라우징하는 동안 웹 브라우저에서 전송되어 사용자의 웹 브라우저에 의해 사용자의 컴퓨터에 저장되는 작은 데이터입니다.
통사론
bool setcookie( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )
매개 변수
매개 변수 | 세부 묘사 |
---|---|
이름 | 쿠키의 이름. 이것은 또한 $_COOKIE super global에서 값을 검색하는 데 사용할 수있는 키입니다. 유일한 필수 매개 변수입니다. |
값 | 쿠키에 저장할 값입니다. 이 데이터는 브라우저에서 액세스 할 수 있으므로 여기에 민감한 정보는 저장하지 마십시오. |
내쉬다 | 쿠키가 만료되어야하는시기를 나타내는 유닉스 타임 스탬프. 0으로 설정하면 쿠키는 세션이 끝날 때 만료됩니다. 현재 Unix 타임 스탬프보다 작은 숫자로 설정하면 쿠키는 즉시 만료됩니다. |
통로 | 쿠키의 범위. / 설정하면 전체 도메인 내에서 쿠키를 사용할 수 있습니다. /some-path/ 로 설정하면 해당 경로와 해당 경로의 하위 항목에서만 쿠키를 사용할 수 있습니다. 기본값은 쿠키가 설정된 파일의 현재 경로입니다. |
도메인 | 쿠키를 사용할 수있는 도메인 또는 하위 도메인입니다. 벌거 벗은 도메인 stackoverflow.com 으로 설정하면 해당 도메인 및 모든 하위 도메인에서 쿠키를 사용할 수 있습니다. 하위 도메인 meta.stackoverflow.com 설정하면 쿠키는 해당 하위 도메인 및 모든 하위 하위 도메인에서만 사용할 수 있습니다. |
안전한 | TRUE 로 설정하면 클라이언트와 서버간에 보안 HTTPS 연결이있는 경우에만 쿠키가 설정됩니다. |
httponly | HTTP / S 프로토콜을 통해서만 쿠키를 사용할 수 있도록 지정하고 JavaScript와 같은 클라이언트 측 스크립팅 언어에서는 쿠키를 사용할 수 없도록 지정합니다. PHP 5.2 이상에서만 사용할 수 있습니다. |
비고
setcookie
함수를 호출하는 것만으로는 주어진 데이터를 $_COOKIE
글로벌 배열에 넣는 것이 아니라는 점에 주목할 필요가 있습니다.
예를 들어 다음과 같은 작업을 수행 할 필요가 없습니다.
setcookie("user", "Tom", time() + 86400, "/");
var_dump(isset($_COOKIE['user'])); // yields false or the previously set value
그 값은 아직 없습니다. 다음 페이지가로드 될 때까지는 아닙니다. setcookie
는 " 다음 HTTP 연결을 사용하면 클라이언트 (브라우저)에이 쿠키를 설정하도록 지시합니다 "라고 말합니다. 그런 다음 헤더가 브라우저로 전송되면이 쿠키 헤더가 포함됩니다. 그런 다음 브라우저는 쿠키가 아직 만료되지 않았는지 확인한 후 http 요청에서 쿠키를 서버로 전송하고 PHP가 쿠키를 수신하면 그 내용을 $_COOKIE
배열에 저장합니다.
쿠키 설정하기
쿠키는 setcookie()
함수를 사용하여 설정됩니다. 쿠키는 HTTP 헤더의 일부이므로 브라우저에 출력을 보내기 전에 쿠키를 설정해야합니다.
예:
setcookie("user", "Tom", time() + 86400, "/"); // check syntax for function params
기술:
- 이름이
user
쿠키를 만듭니다. - (선택 사항) 쿠키의 값은
Tom
- (선택 사항) 쿠키는 1 일 후 만료됩니다 (86400 초).
- (선택 사항) 쿠키는 전체 웹 사이트
/
- (선택 사항) 쿠키는 HTTPS를 통해서만 전송됩니다.
- (선택 사항) JavaScript와 같은 스크립팅 언어에는 쿠키에 액세스 할 수 없습니다.
슈퍼 글로벌
$_COOKIE
가 새 데이터로 즉시 채워지지 않으므로 생성되거나 수정 된 쿠키는 후속 요청 (path
및domain
일치하는 경우)에서만 액세스 할 수 있습니다.
쿠키 가져 오기
쿠키가 지정된 user
검색 및 출력
쿠키의 값은 전역 변수 $_COOKIE
사용하여 검색 할 수 있습니다. 예를 들어 user
라는 이름의 쿠키가있는 경우이를 검색 할 수 있습니다.
echo $_COOKIE['user'];
쿠키 수정하기
쿠키의 값은 쿠키를 재설정하여 수정할 수 있습니다.
setcookie("user", "John", time() + 86400, "/"); // assuming there is a "user" cookie already
쿠키는 HTTP 헤더의 일부이므로 모든 출력을 브라우저에 보내기 전에
setcookie()
를 호출해야합니다.
쿠키를 수정할 때
setcookie()
의path
와domain
매개 변수가 기존 쿠키와 일치하는지 확인하십시오. 그렇지 않으면 새 쿠키가 대신 만들어집니다.
쿠키의 값 부분은 쿠키를 보낼 때 자동으로 urlencoding되며, 쿠키가 수신되면 자동으로 디코드되고 쿠키 이름과 같은 이름으로 변수에 지정됩니다
쿠키가 설정되어 있는지 확인하기
슈퍼 글로벌 $_COOKIE
변수에 isset()
함수를 사용하여 쿠키가 설정되어 있는지 확인하십시오.
예:
// PHP <7.0
if (isset($_COOKIE['user'])) {
// true, cookie is set
echo 'User is ' . $_COOKIE['user'];
else {
// false, cookie is not set
echo 'User is not logged in';
}
// PHP 7.0+
echo 'User is ' . $_COOKIE['user'] ?? 'User is not logged in';
쿠키 제거
쿠키를 제거하려면 만료 시간 소인을 과거 시간으로 설정하십시오. 그러면 브라우저의 제거 메커니즘이 트리거됩니다.
setcookie('user', '', time() - 3600, '/');
쿠키를 삭제할 때
setcookie()
의path
및domain
매개 변수가 삭제하려는 쿠키와 일치하는지 확인하거나 즉시 만료되는 새 쿠키가 만들어 지는지 확인하십시오.
또한 현재 페이지에서 $_COOKIE
값을 사용하지 않을 경우 $_COOKIE
값을 설정 해제하는 것이 좋습니다.
unset($_COOKIE['user']);