>  기사  >  백엔드 개발  >  PHP setcookie를 사용하여 쿠키를 삭제하는 방법

PHP setcookie를 사용하여 쿠키를 삭제하는 방법

藏色散人
藏色散人원래의
2021-10-27 10:02:202303검색

PHP setcookie를 사용하여 쿠키를 삭제하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "setcookie("TestCookie", "", time() - 3600);" 메서드를 통해 쿠키를 삭제합니다.

PHP setcookie를 사용하여 쿠키를 삭제하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php setcookie 쿠키를 삭제하는 방법은 무엇입니까?

php 쿠키 삭제 방법에 대한 자세한 설명:

먼저 관련 쿠키의 메커니즘을 살펴보겠습니다.

코드는 다음과 같습니다:

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

쿠키를 삭제하려면 만료 날짜가 과거인지 확인하여 브라우저의 삭제 메커니즘을 트리거해야 합니다.

다음 예에서는 방금 설정한 쿠키를 삭제하는 방법을 보여줍니다.

코드는 다음과 같습니다.

<?php
//将过期时间设为一小时前
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
?>

쿠키를 삭제하는 방법은 쿠키의 유효 기간을 현재 시간 이전으로 설정하는 것입니다. 거의 모든 PHP 프로그래머가 그렇습니다.

나중에 PHP를 처음 접하는 친구가 프로그램에서 쿠키의 값을 비워두도록 설정하고 싶었는데 쿠키가 바로 삭제되었다고 하더군요. 당시 내 첫 번째 반응은 믿지 않는다는 것이었기 때문에 테스트해 보았습니다.

코드는 다음과 같습니다.


setcookie("testcookie", &#39;&#39;);
print_r($_COOKIE);

결과는 $_COOKIE['뿐만 아니라 $_COOKIE 배열 전체가 비어 있다는 것입니다. 테스트쿠키']. 그래서 Winsock을 사용하여 패킷을 캡처하고 반환된 http 헤더를 관찰한 결과 http 헤더가 "Set-Cookie: testcookie=deleted; 만료=Mon, 18-Jun-2007 02:42:33 GMT"로 나타났습니다. 이는 "setcookie("testcookie ", '');"를 의미하며 실제로 쿠키 testcookie를 직접 삭제하며 PHP 매뉴얼에는 이 상황에 대한 설명이 전혀 없습니다.

드디어 PHP 소스 코드를 읽고 마침내 진실을 찾았습니다. (이것이 오픈 소스의 장점입니다. 불분명한 내부 스토리가 있으면 소스 코드를 직접 확인하세요.)

다음 코드는 php5.20 Linux 소스 패키지의 ext/standard/head.c 99행 근처에서 찾을 수 있습니다.

코드는 다음과 같습니다.

if (value && value_len == 0) {
    /* 
     * MSIE doesn&#39;t delete a cookie when you set it to a null value
     * so in order to force cookies to be deleted, even on MSIE, we
     * pick an expiry date 1 year and 1 second in the past
     */
    time_t t = time(NULL) - 31536001;
    dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC);
    sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
    efree(dt);
} else {
    sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : "");
    if (expires > 0) {
        strcat(cookie, "; expires=");
        dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC);
        strcat(cookie, dt);
        efree(dt);
    }
}

소스 코드는 "if (value && value_len == 0)", "value_len"이 0인 경우, "sprintf(cookie, "Set-Cookie: %s=deleted;expires=%s", name, dt);"는 쿠키를 삭제하기 위해 http 헤더를 보냅니다. 브라우저.

마지막으로 PHP에서 "setcookie($cookiename, '');" 또는 "setcookie($cookiename, NULL);"을 사용하면 쿠키가 삭제된다는 결론을 내릴 수 있지만 물론 그러한 매뉴얼은 없습니다.

매우 간단하지 않나요? 때로는 PHP 소스 코드를 주의 깊게 읽어야 할 때도 있습니다.

추천 학습: "

PHP 비디오 튜토리얼"

위 내용은 PHP setcookie를 사용하여 쿠키를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.