포럼
레이아웃에서 세션 변수 이용 문제.
2013.11.01 13:45
모바일 페이지를 WebView를 통해 보여주는 형식으로 앱을 만들었는데 앱의 경우 규정상 애드센스를 사용할 수 없기때문에 애드센스가 보이지 않게 처리하는 부분과 공유 기능이 앱 내에 내장되어있기 때문에 SNS 보내기 애드온을 띄우지 않고 PC 모드 전환 버튼을 보이지 않게 처리하기 위해
GetUseragentString()을 통해 UA값을 받아온 뒤 기존 UA값 뒤에 특정 문자열을 넣은 뒤 SetUserAgentString을 통해 UA를 변경한 뒤 레이아웃이나 위젯 코드에서 if문으로 !preg_match('/(추가한 문자열)/',getenv('HTTP_USER_AGENT')) 로 판단하여 앱에서 출력되지 않도록 처리했습니다.
처음에는 잘 동작했는데 쓰다보니 UA값을 변경시 세션에 문제가 생기는지 로그인 유지의 경우 문제가 없지만 그 외에 세션값이 날라가서 마켓의 가입 경로 등의 세션을 이용하는 모듈에서 문제가 생기고 있습니다.
이 문제로 인해 UA 변조 대신 파라미터로 &is_app을 주어 앱 접속 여부를 구별하게 처리하였는데 문제는 레이아웃상에서 <!--@if(!$_SESSION['변수명'])--> 형태의 코드를 넣었을 때 변수값을 가져오지 못하는 것 같습니다.
Context::get('is_app')으로 처리할 경우에는 메인 페이지에서는 동작하지만 다른곳으로 이동시에는 파라미터값이 사라져서 효과가 없고요.
레이아웃에서 $_SESSION 변수를 사용할 방법이 있을까요?
댓글 4
-
엘카
2013.11.01 14:08
-
Gunmania
2013.11.01 14:52
음 적용 자체는 성공했지만 이 방법 역시 페이지를 오가는 과정에서 URL에 &is_app 파라미터가 사라지면 효과가 없어지네요. 다른 방법을 찾아봐야하는.. 답변 감사합니다.
-
푸시아
2013.11.02 03:54
http://www.xpressengine.com/index.php?sort_index=last_update&mid=tip&page=4&document_srl=20901998 -
Gunmania
2013.11.02 08:07
Context::set을 모듈쪽에서 다시 레이아웃 폴더에 php에 넣고 include 하니 되더군요. 문제는 로그인/로그아웃시 풀리는 문제였는데 ?m=0/?m=1 파라미터가 어떻게 동작하는지 확인해보니 쿠키로 동작하는걸 확인하고 세션 대신 쿠키를 이용하도록 변경해줘서 어제 밤(10~11시쯤?)에 성공했습니다. 다만 최초 접속시에는 WebView쪽 문제인지 쿠키가 없어서 초기 접속시에는 CookieManager로 임의로 넣어주는 방식을 사옹했고요.
layouts/hello_xe/layout.html
layouts/hello_xe/session.php