php 에서 form 전송후 실패하거나, 오류가 났을 경우 뒤로가기(history.back) 를 합니다.
그때 이미 썼던 내용이 사라져버려 사용자에게 불편을 줍니다.
이를 해결하기 위해 뒤로가기를 다른 방식으로 처리하거나,
iframe 이나 새창으로 form 을 넘기거나,
그외 여러방법을 동원하는 경우도 있습니다.
그러나, 이를 해결하는 방법중 쉬운(?)것은 옵션으로 조정하는 것이
가장 좋을 듯 합니다.
보통 form 전송시에 옵션을 조정하면 됩니다.
이런 내용을 입력하는 문서(php)의 맨 처음에
session_cache_limiter("private_no_expire");를 추가합니다.
여기까지는 기존의 나와있는 문서에 비슷하게 나와있습니다.
session_cache_limiter("private");
나 session_cache_limiter("public"); , session_cache_limiter("nocache"); 등의 옵션이 있음.
그런데, 저런식으로 했는데, 작동을 안하는 경우가 있습니다.
그 이유는 바로 session_start(); 라는 부분입니다.
session_start(); 가 있는 항목 위에 위 코드를 삽입합니다.(session_start 보다 먼저 나와야 합니다)
그런데, 이 경우에도 안되는 경우가 있습니다.
php.ini 파일의 session 항목에
; Initialize session on request startup.다음과 같이 자동으로 session start 할 것인가 하는 옵션이 있습니다.
session.auto_start = 0
session.auto_start = 1 ; 처럼 설정해서 사용하는 경우
위의 옵션이 되지 않습니다.
먼저 session_start 상태가 되기 때문에 , session_cache_limiter("private"); 가 먹히지 않기 때문입니다.
그래서 php.ini 의 옵션을 session.auto_start = 0; 로 해주고, session_start(); 를 이용해 세션을 시작해야 합니다.
이 부분만 주의하면 이 문제를 해결할 수 있을 것입니다.
참고 :
기본 php.ini 에서
session.auto_start = 1 ; 로 사용하던 경우 코드를 수정해야 할 부분이 많아서 적용하지 못하는 수가 있다.
해당 서버에 virtual host 로 다수의 사이트를 운영하는 경우(웹호스팅) 더욱더 적용이 어렵게 된다.
이 경우 apache2 의 virtualhost 를 사용해 특정 사이트(도메인)에 대해 옵션을 다르게 적용해서 처리할 수 있다.
<VirtualHost> </VirtualHost> 사이에 php_value 옵션으로 처리한다.
사용법은 php_value {옵션값} 으로, 무척 간단하다.
예로 흔히 사용하는 옵션을 보면.
php_value register_globals 0
php_value session.auto_start 0
처럼 사용한다.
위의 session_cache_limiter("private"); 를 사용하기 위해 session.auto_start 는 0 으로 설정하고
코드상에서 session_start(); 를 해주는 방식을 사용한다.
서버내의 사이트 전체 적용보다 코드를 수정할 부분이 적어져 단계적으로 적용할 때 사용한다.
트랙백 주소 :: http://taemy.experlab.com/trackback/314
% 공지 : 혹시 트랙백이 안되시면, 댓글로 관련글을 남겨주세요.(수동트랙백) %




댓글을 달아 주세요
잘보구 갑니다. php도 공부중인데 도움이 되네용.^^
도움이 되었다니, 기쁘네요.
블로그 이름에 어울리도록 유용한 자료를 올리려고 하지만, 쉽지는 않네요.
좀더 노력해야 겠습니다. ^^