[php-tip]PHP 세션 변수가 사라진다
<?
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
?>
php 소스 제일 상단에 위 소스를 삽입한다.
예제출처 (http://www.thescripts.com/forum/thread512527.html)
A라는 도메인에서 iframe을 이용해서 B도메인에 있는 페이지를 불러왔다.
불려지는 B도메인의 웹페이지는 session변수를 생성하는데
iframe내에서 다른 B도메인내의 웹페이지로 이동을 하면 세션변수가 사라지는 현상이 발생한다.
Session.sessionID 를 이용해서 확인해 보면 계속해서 새로운 sessionID가 생성 됨을 확인할 수 있었다.
한마디로 세션이 저장이 되지않고 계속해서 세션쿠키가 새로 발급되는 현상으로 iframe뿐만 아니라 frame에서도 마찬가지였다.
또한, 이 문제는 FF에서는 정상적으로 세션변수가 유지되는 반면에 IE6에서는 세션변수가 사라졌다.
해결방법 (http://classicasp.aspfaq.com/general/why-won-t-my-session-variables-stick.html)
위의 링크를 따라가면 더더욱 많은 세션변수가 사라지는 현상과 그 해결방법에 대해나와있으니
참고하길 바라며 내가 겪은 세션변수 사라지는 현상의 해결방법은 다음과 같았다.
Internet Explorer 6에서 FRAMESET을 사용하면 세션 변수가 손실된다
MSDN기술문서 KB #323752
(한글로 번역되어있으니 기술 문서를 따라가면 원인과 해결방법에 대해 쉽게 알 수 있다.)
쿠키발급에 관한 정책문제이며
response.addHeader "P3P","CP=""IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"""
또는
header('P3P: CP="NOI CURa ADMa DEVa TAIa OUR DELa BUS IND PHY ONL UNI COM NAV INT DEM PRE"');
위의 헤더를 추가해주면 간단하게 해결이 된다.
이렇게 해도 안된다면 session_start()를 확인해본다. <- 자세히 보기