코드는 다음과 같습니다.
<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"
을 표시하려면 다시 새로고침하세요.