[php] 쿠키 제거

쿠키를 제거하고 싶을 때

unset($_COOKIE['hello']);

파이어 폭스의 쿠키 브라우저에서 쿠키가 여전히 존재한다는 것을 알았습니다. 쿠키를 어떻게 제거 할 수 있습니까?



답변

당신은 이것을 시도 할 수 있습니다

if (isset($_COOKIE['remember_user'])) {
    unset($_COOKIE['remember_user']);
    setcookie('remember_user', null, -1, '/');
    return true;
} else {
    return false;
}


답변

값을 “”로 설정하고 만료 날짜를 어제 (또는 과거의 날짜)로 설정하십시오.

setcookie("hello", "", time()-3600);

그러면 다음에 페이지가로드 될 때 쿠키가 만료됩니다.


답변

쿠키를 삭제하는 확실한 방법은 $_COOKIE값과 브라우저 쿠키 파일을 모두 지우는 것입니다 .

if (isset($_COOKIE['key'])) {
    unset($_COOKIE['key']);
    setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}


답변

쿠키를 안정적으로 삭제하려면 PHP 서버에서 계산 한 것처럼 쿠키가 과거에 언제라도 만료되도록 설정하는 것만으로는 충분하지 않습니다. 이는 클라이언트 컴퓨터가 서버와 다른 시간을 가질 수 있고 종종 있기 때문입니다.

가장 좋은 방법은 일초 만료 빈 쿠키와 현재의 쿠키를 덮어하는 것입니다 미래를 , 신기원 이후로 이렇게 (1970년 1월 1일 0시 0 분 0 초 UTC)를 :

setcookie("hello", "", 1);


답변

그러면 코드에서 쿠키가 설정 해제되지만 각 요청마다 $ _COOKIE 변수가 새로 고쳐 지므로 다음 페이지 요청에서 다시 나타납니다.

실제로 쿠키를 제거하려면 과거에 만료 날짜를 설정하십시오.

// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);


답변

내 코드에서 동일한 문제가 발생하여 쿠키 경로 문제라는 것을 알았습니다. 이 스택 오버플로 게시물을 확인하십시오 : PHP 세트 쿠키를 삭제할 수 없습니다

“/”의 경로 값을 사용하여 쿠키를 설정했지만 지우려고 할 때 경로 값이 없으므로 지워지지 않았습니다. 다음은 작동 한 예입니다.

쿠키 설정 :

$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);

쿠키 지우기 :

setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);

희망이 도움이됩니다.


답변

쿠키가 과거에 만료되도록 설정 한 경우 브라우저가 쿠키를 제거합니다. php.net에서 setcookie () 삭제 예제를 참조하십시오