[php] 쿠키유지시간 개념이 시스템마다 일정하지 않은 이유...

gyxor의 이미지

지금부터 저의 글은 제가 모두 직접 확인하고 여러번 반복해본 사실입니다.

정말 이상한 현상이 발견되었습니다. 저의 지식으로는 도저히 설명할수 가 없습니다.

우선 php쿠키에 대해 제가 알고있는 상식은

유지시간을 0로하면 쿠키는 실제로 파일로 생성되지는 않는다는것!

그리고 유지시간을 time()+0 로 하면 그때부터는

time()+1

time()+2

.

.

그 다음부터는 쿠키파일이 생성됩니다.

또한 유지시간 time()+a에서 +a값은 디폴트가 몇백초이기 때문에 (물론 이부분은 서버마다

다를수 있다고 생각합니다.)

설령 time()+1이라고 잡았더라도 실제로 파일은 1초가 아니라 몇백초 후에나 그효력을

상실합니다.

이상은 제가 저희 집 컴터에서 윈98에서 pws를 설치해서 직접확인해본 결과입니다.

오늘 학교전산실에서 해보니..

setcookie('NOTICE_OPENED', $NOTICE_OPENED.'|'.$no , time()+336 , '/');

이와같은 함수로 쿠키를 생성하면 쿠키가 생성이 되는것은 cookie폴더에서 확인할 수 있습니다.

setcookie('NOTICE_OPENED', $NOTICE_OPENED.'|'.$no , time()+335 , '/');

이와 같이 하면 쿠키가 생성이 되지 않습니다.

재부팅후에는

setcookie('NOTICE_OPENED', $NOTICE_OPENED.'|'.$no , time()+338 , '/');

이와같은 함수로 쿠키를 생성하면 쿠키가 생성이 되는것은 cookie폴더에서 확인할 수 있습니다.

setcookie('NOTICE_OPENED', $NOTICE_OPENED.'|'.$no , time()+337 , '/');

이와 같이 하면 쿠키가 생성이 되지 않습니다.

커트라인이 생겨버립니다.

첫째 , 이부분이 이상합니다 왜 이런 현상이 나타나는지.. 그리고 그 커트라인조차 일정하지

않는지 정말 모르겠습니다.

둘째, 더욱 이상한것은 쿠키가 생성되지 않는 time()+0 ~ time()+335 or 336 이부분에서는

쿠키가 제역할을 하지 못한다는것입니다.

그리고 쿠키가 처음 생성되는 time()+338 이시각은

쿠키의 실제 유효시간이 338초가 아니라 0초이며

예를들어 time()+348은 유효시간이 348초가 아니라 10초입니다.

10초뒤에는 게시판의 카운트가 올라가는것을 볼 수 있습니다.

정말 이상합니다

[앞서 말씀드린 디폴트타임과 관련이 있는것이라고 생각했었습니다.]

php관련 실력있으신 여러분들의 답변을 기대합니다.

두가지 답변부탁드립니다.

맹고이의 이미지

phpschool 에서 답변을 찾는게 더 빠르지 않을까요?

물론 여기에도 많은 고수분들이 계시겠지만...

gyxor의 이미지

ps: 집에와서 해보니 앞서 말씀드린 쿠키생성 경계값이 54이군요.. time()+55부터는 생성이
됩니다. 물론 +55는 0초로 보는거 같습니다. 또한 재부팅후에는 경계값이 55가 되어있었습니다.
추측하건데.. 경계값은 계속바뀌며.. 현재시각과 관련이 있는거 같습니다. 정말 이상합니다.
전에는 안그랬는데 서버에서 어떠한 변화가 있었는지 모르겠습니다.
리눅스서버이고 레드헷9.0입니다. 학교 동아리서버입니다.