2013. 10. 24.

PHP setcookie()로 생성한 쿠키가 cookie 삭제가 안된다.

md5 함수로 막 어지럽히고, base64_encode 함수로 막 괴롭힌 값들로 쿠키를 생성했다.
사실 이건 문제가 안된다.

쿠키를 생성하는 방법 등 기본적인 것들은 링크를 참조 하도록 하자.
http://www.w3schools.com/php/php_cookies.asp
친절한 곳이다.

쿠키 생성하고, 지우는데 사용한 코드다.
헌데 도대체가 지워지지 않는다. 꼬박 이틀을 날렸다.

setcookie('param', 'data', time() + 3600 );
setcookie('param', '',     time() - 3600 );

http://stackoverflow.com/questions/6843822/android-jquery-mobile-cookies-not-stored
http://stackoverflow.com/questions/5681117/cookies-not-being-deleted/7103043#7103043

setcookie()에 네번째 파라미터가 있다.
경로를 지정해 주는 파라미터인데, 이놈을 지정해 주지 않으면 쿠키 삭제가 안될 수 도 있다.
브라우저가 디폴트로 현재 페이지를 어쩌고 저쩌고 ...
그래서 찾아보니 대부분 이렇게 가더라.

setcookie('param', 'data', time() + 3600, '/' );
setcookie('param', '', time() - 3600, '/' );

아참, 그리고 쿠키는 setcookie()로 만들어 주자 마자 바로 사용할 수 없다.

setcookie('param', 'data', time() + 3600, '/' );
echo $_COOKIE[param];

이렇게 해봤자 값은 나오지 않는다. 새로고침 처럼 페이지가 다시 불러와야지 써먹을 수 있다.

setcookie('param', 'data', time() + 3600, '/' );
if( $_COOKIE[param] == "" ){
  echo "<script type='text/javascript'> window.location.reload(); </script>";
} else{
  echo $_COOKIE[param];
}

이렇게 하라는건 아니고, 이렇게 해서 페이지를 다시 불러주면 한방에 찍어 볼 수 있다.

댓글 없음 :

댓글 쓰기