제목 | 한글 데이터 검색 후 다른 액션을 할 경우 세션데이터가 삭제되는 문제 | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | 정수리 | 작성시각 | 2022/09/21 15:22:38 |
|
|||
뷰페이지에서 이전 페이지로 이동 시 검색키워드 또는 페이지 번호를 유지하기 위해 세션을 사용하여 구현하였습니다. 문제는 리스트 페이지에서 한글 데이터를 검색한 후 다른 액션(재검색 또는 페이지 이동 등)을 하면 세션이 끊기는 문제가 발생합니다. 날짜나 영문으로 했을 경우에는 다른액션을 진행하여도 위와 같은 문제가 발생하지 않습니다. 검색 전 후로 리스트에서 all_userdata()로 찍었을 경우 저장한 세션데이터가 정상적으로 저장되고 출력되는것을 확인하였는데 한글데이터로 검색 후 페이지 이동한 곳에서 all_userdata()로 찍어보면 저장하였던 데이터들이 삭제된 것을 확인하였습니다. 컨트롤러에 $this->session->set_userdata('prevPage',current_url())을 사용하지 않으면 세션이 끊기는 문제가 발생하지는 않습니다. 포럼에서 끊기는 문제 관련해서 session_cooki_name을 변경해보라는 글이 있어 변경도 해보았지만 해당 문제는 해결되지 않았으며 참고될만한 게시글을 찾지 못해 글을 올리게 되었습니다. 어느 부분을 확인하거나 수정해야 $this->session->set_userdata('prevPage',current_url()); 사용하여 정상적으로 기능을 구현할수 있을까요? Ci 버전은 2점대 입니다... 컨트롤러 function List($params='') {//리스트 페이지 출력 데이터 설정 $this->session->set_userdata('prevPage',current_url()); 컨트롤러 접근하면 prevPage라는 키워드로 세션에 현재 url를 저장해놓습니다. } 리스트 페이지에서 검색 코드 $('.land_search_btn').on('click', function(){ var NO = $('input[name="NO"]').val(); var NM = $('input[name="NM"]').val(); if(SCH_OWN_NM !=''){ location.href = urlinfo()+'cs/act/nd/List/'+NO+'/nm/'+NM; } else { location.href = urlinfo()+'cs/act/nd/List/'+NO; } }); 세션 검증 public function session_confirm()//로그인 유지 여부 확인 { $this->CI->load->helper('url'); if(!$this->CI->session->userdata('name')) { echo " <meta http-equiv='Content-type' content='text/html; charset=utf-8'> <script> alert('연결이 끊였습니다. 로그인 화면으로 돌아갑니다.'); window.location.href = '".base_url()."ln/ln_c'; </script> "; //redirect('ln/ln_c'); } } session 환경설정 $config['sess_cookie_name'] = 'cisession'; $config['sess_expiration'] = 7200; $config['sess_expire_on_close'] = false; $config['sess_encrypt_cookie'] = FALSE; $config['sess_use_database'] = FALSE; $config['sess_table_name'] = 'land_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300;
|
|||
다음글 | Api 받아오는 방법 (2) | ||
이전글 | 하이브리드앱 속도 (2) | ||
windforce
/
2022/09/22 10:14:59 /
추천
0
|
정수리
/
2022/09/22 10:44:04 /
추천
0
@widforce 답변감사합니다. 말씀해주신 방법대로 테스트를 진행해보았으나 urlencode로 변환 후 세션을 저장하는 방법으로 진행 시 영어데이터를 넣어도 세션이 해제되어 버려 이전 상태로 되돌린 후 테스트를 했을 시 에는 한글 검색값만 넣었을 경우에만 세션이 해제 되었습니다. 에러 출력을 했을 때에는 아무런 에러가 출력되지 않아 난감한 상황입니다. 현재는 어쩔수 없이 php session을 사용하여 해결하였습니다.
|
windforce
/
2022/09/22 14:00:38 /
추천
0
세션이 지워지는 상황에 current_url()에 무슨 값이 들어있는지 보시고 그 값을 세션에 그대로 넣어보세요 그래도 세션이 지워지는지 $this->session->set_userdata('prevPage',current_url())이 아니라 $this->session->set_userdata('prevPage','https://...') 이런 식으로요 지워지는 상황과 유지되는 상황에서 current_url()의 값에 어떤 차이가 있는지도 확인해봐야 할 것 같네요 |
정수리
/
2022/09/22 14:26:09 /
추천
0
@windforce 답변감사합니다. 덕분에 해결하였습니다. 말씀하신대로 $this->session->set_userdata('prevPage','https://...'), $this->session->set_userdata('prevPage',current_url()) 비교해보았는데 검색값으로 들어가는 한글 값이 인코딩되어 있는 상태면 세션이 끊기는 것을 찾아냈습니다. $this->session->set_userdata('prevPage',urldecode(current_url())); 인코딩된 값을 디코딩하여 넣어주니 끊기지 않고 정상적으로 되었습니다. 원인을 분석하는 능력이 부족하다는 느끼네요. 다시 한번 정말 감사합니다. |
확인해볼 만한 부분
1. 정말 한글/영문에 따라 세션이 지워지는 게 맞는지? 그렇다면 한글 검색값을 urlencode같은걸로 바꿔주면 세션이 유지가 되는가?
2. 에러 출력했을 때 출력되는 에러는 없는지? 있다면 해당 에러 해결 후 재시도
이 정도 확인해보면 해결될 것 같습니다.