CI 묻고 답하기

제목 세션과 리다이렉션을 함께 사용할때 오류
글쓴이 지침 작성시각 2016/08/03 17:02:29
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 14227   RSS

컨트롤에서

function aaa(){

$this->session->set_userdata('idx','123');

redirect("/test/bbb/","refresh");

}

 

이런식으로 세션저장후 리다이렉트를 보내게 했습니다. 리다이렉트한 후에 세션을 저장하지 못하는것 같습니다.

리다이렉트를 하지않고 그냥 

$this->session->set_userdata('idx','123');

$this->load->view('/test/ccc/',$data);

를 한 경우에는 세션이 저장이 되지만.. 리다이렉트한 경우엔 세션이 저장이 되지않네요.. 설정들은 문제는 없는것같습니다..

원인이 뭘까요..?

 

컨트롤 aaa함수에선 저장이 되는것같지만 redirect("/test/bbb/","refresh");

/test/bbb에 bbb함수에서 세션이 사라지는것같습니다...

 

 

$config ['sess_cookie_name'] = 'ci_session';

$config ['sess_expiration'] = 14400;

$config ['sess_expire_on_close'] = TRUE;

$config ['sess_encrypt_cookie'] = FALSE;

$config ['sess_use_database'] = FALSE;

$config ['sess_table_name'] = 'ci_sessions';

$config ['sess_match_ip'] = FALSE;

$config ['sess_match_useragent'] = FALSE;

$config ['sess_time_to_update'] = 300;

 

 

$config ['cookie_prefix'] = "";

$config ['cookie_domain'] = "";

$config ['cookie_path'] = "/";

$config ['cookie_secure'] = FALSE;

 다음글 초보적인 질문 한가지만 하겠습니다. ㅜㅜ class 입... (3)
 이전글 model에서 데이터 리턴 오류 (5)

댓글

천재작곡가 / 2016/08/03 17:59:08 / 추천 0
$this->session->set_userdata('idx','123');

if( $this->session->userdata('idx') ) 
{
       redirect("/test/bbb/","refresh");
}

요렇게 넣구

test/bbb 에서

enable_profiler(TRUE);

요걸 넣어서 테스트해보시는게 어떨까요

지침 / 2016/08/03 18:16:43 / 추천 0

천재작곡가 // 답변감사합니다.

테스트 해본결과.. 역시 똑같이 세션이 저장되서 리다이렉트가 되는데 

세션이 사라지는군요...

 

test/bbb에서 

 

if($this->session->userdata('idx')){

            echo "asd";

        }

찍어봐도 출력이 나오지 않네요..

지침 / 2016/08/03 21:43:51 / 추천 0

원래 코딩이 userdata가 아니고 flashdata로 쓰고있습니다.

function aaa_1(){

$this->session->set_flashdata('idx','123');

$this->load->view('aaa_1',$data);

}

첫번째 aaa_1함수에서 idx값을 플래시세션으로 저장을 했습니다.

뷰페이지 aaa_1.php 에서 aaa_2로 전송했구요 

function aaa_2(){

  if(----){

     $this->session->set_flashdata('idx','123');

     redirect("/test/aaa_1","refresh");

  }

$this->load->view('aaa_2',$data);

}

여기서 어떤 조건에 맞으면 다시 idx값을 세션저장후 첫번째 페이지인 aaa_1로 가도록 했습니다.

aaa_1 와 aaa_2 함수에서 같은 세션을 저장해서 그런지 잘안되더군요.

그래서 aaa_1의 세션저장하는것을 지우고 aaa_2에서만 idx값을 세션저장하도록 코딩을 하니까 리다이렉트 후에도

idx값이 살아있었습니다. 

물론 반대로 aaa_1에 세션저장하고 aaa_2에선 세션을 저장안한채 리다리렉트 하면 세션값이 사라졌구요..

 

일단은 해결은 됬는데 정확하게 왜 되고 안되고 그러는지 아직 잘 모르겠네요..

제 글을 보고 왜 그런지 아시는분은 댓글 달아주시면 감사하겠습니다.

kaido / 2016/08/04 09:07:48 / 추천 0

플래시 세션은 가급적 사용을 안 하시는 것이 좋습니다.

생각보다 효율적이지 않은데다, ci4에서도 현재 플래시 세션에 대한 내용이 없더군요. 

박세 / 2016/08/04 09:32:33 / 추천 0

kaido // 

그렇군요 .. 좋은 정보 감사합니다 ^^