PHP 초보자가 쿠키에 관해 질문이 있습니다.

WBOY
풀어 주다: 2016-10-10 11:56:17
원래의
837명이 탐색했습니다.

코드는 다음과 같습니다.

<code>function cookie($name) {
    return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null;
}

/**
 * 从客户端浏览器删除一个 Cookie。
 * @param  string $cookie_name 要删除的 Cookie 名称。
 * @return void
 */
function delete_cookie($cookie_name) {
    setcookie($cookie_name, '', time() - 2 * 24 * 3600);
    unset($_COOKIE[$cookie_name]);
}

delete_cookie('mycookie');
setcookie('mycookie', 'myvalue');
var_dump(cookie('mycookie')); // 为何这里总是输出NULL?为什么不是输出刚刚设置的'myvalue'?</code>
로그인 후 복사
로그인 후 복사

왜 항상 NULL이 출력되나요? 왜 'myvalue'가 출력을 설정하지 않습니까?

답글 내용:

코드는 다음과 같습니다.

<code>function cookie($name) {
    return isset($_COOKIE[$name]) ? $_COOKIE[$name] : null;
}

/**
 * 从客户端浏览器删除一个 Cookie。
 * @param  string $cookie_name 要删除的 Cookie 名称。
 * @return void
 */
function delete_cookie($cookie_name) {
    setcookie($cookie_name, '', time() - 2 * 24 * 3600);
    unset($_COOKIE[$cookie_name]);
}

delete_cookie('mycookie');
setcookie('mycookie', 'myvalue');
var_dump(cookie('mycookie')); // 为何这里总是输出NULL?为什么不是输出刚刚设置的'myvalue'?</code>
로그인 후 복사
로그인 후 복사

왜 항상 NULL이 출력되나요? 왜 'myvalue'가 출력을 설정하지 않습니까?

COOKIE는 클라이언트에서 가져오기 때문에 마지막 스크립트에서 COOKIE 읽기를 설정해야 합니다. 하지만 이 스크립트를 실행할 때마다 지난번에 설정한 COOKIE를 삭제하고 새 COOKIE를 설정해야 합니다. COOKIE는 다음에 실행되는 스크립트로만 읽을 수 있습니다. 그런 다음 삭제-설정-삭제-설정 주기를 계속합니다. . . 그래서 나는 그것을 읽을 수 없습니다.
COOKIE를 SESSION으로 변경하면 SESSION이 COOKIE만큼 느리지 않게 읽을 수 있습니다. 서버에 저장됩니다.

COOKIE 할당은 다음 검색 요청까지 적용되지 않기 때문입니다. 그런데 다음에 열람할 때 삭제하니까 이 COOKIE가 얼마나 당신을 향한 증오인지 계속 궁금하네요...

이 요청에서 $_COOKIE['mycookie']를 삭제했으며 setcookie를 적용하려면 다음 요청이 필요합니다.
$_COOKIE는 쿠키 정보를 PHP로 전달하는 브라우저입니다.
setcookie는 PHP입니다. 브라우저에 알립니다.
즉, $_COOKIE['xxx']를 생성하려면 setcookie('xxx')가 있는 요청 이 먼저 실행되어야 합니다.

'myvalue'를 출력하고 싶다면 주석 처리

하면 됩니다. 출력하시면 됩니다unset($_COOKIE[$cookie_name]);

unset은 즉시 적용되지만 set_cookie는 다음 요청까지 적용되지 않습니다.

마찬가지로 설정되지 않은 문장을 삭제하면 방금 출력된 set_cookie가 아닌 마지막 set_cookie가 출력됩니다.

예를 들어 unset 문장을 삭제한 다음 새로 고치면

이 표시됩니다. 문제 없습니다. string(7) "myvalue"그런 다음 myvalue를 myvalue2로 변경하고 새로 고쳤는데 여전히

이 표시되었습니다.

string(7) "myvalue"을 표시하려면 다시 새로고침하세요.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!