나는 동일한 문제가있어서 그 문제를 알아 냈습니다. 데이터베이스에 세션을 저장하고 있으면 세션이 작동하지 않습니다. 는 인증 컨트롤러에서이 코드 ($this->_show_message()
)를 실행 다음
$this->delete_autologin();
// See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
$this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));
$this->ci->session->sess_destroy();
:
탱크 인증은 기본 라이브러리에서이 코드 ($this->tank_auth->logout()
)를 실행
$this->session->set_flashdata('message', $message);
redirect('/auth/');
문제가를 그 sess_destroy()
가입일 flashdata를 설정하기 전에 실행되었으므로 flashdata를 추가 할 데이터베이스 행이 없으므로 flashdata가 설정되지 않습니다.
당신이 비어있는 새 세션을 생성하기 때문에이 작동 application/libraries/Tank_auth.php
에 기능 logout()
즉시 $this->ci->session->sess_destroy();
후 $this->ci->session->sess_create();
추가 : 1
옵션 :
는이 시점에서 몇 가지 해결책이 있습니다 여기서 플래시 데이터를 저장할 수 있습니다. 잠재적 인 문제는 데이터베이스에서 더 많은 작업을 수행하고 있다는 것입니다 (삭제 + 삽입).
옵션 2 :
을 주석 /은 CI가 flashdata를 추가하기 만 업데이트 쿼리를 수행 할 수 있도록, application/libraries/Tank_auth.php
세션이 파괴되지 않기 때문에이 작동
에 기능 logout()
에 $this->ci->session->sess_destroy();
을 삭제합니다. 세션을 완전히 제거해야하는 경우가 아니면 옵션 1보다 좋습니다.
옵션 3 :
FALSE
에 $config['sess_use_database']
를 설정합니다.
세션이 데이터베이스에 저장 될 때 작동하는 것과 달리 세션이 다시 요청 될 때 자동으로 만들어지기 때문에 작동합니다. 잠재적으로 덜 안전합니다.
마지막으로 귀하의 적용에 가장 적합한 옵션을 결정하는 것은 귀하에게 달려 있습니다.
Tank_Auth와 관련이 있습니까? 새로 설치를 시도 했습니까? –
나는 log_message (..) 문을 넣고 브라우저가 만드는 각 http 요청에 대한 flashdata의 값을 확인하는 것이 좋습니다. codeigniter 내의 내부 리디렉션 (redirect() 사용)도 플래시 데이터를 지 웁니다. 로그 파일에서 원인이 될 수있는 잘못된 리디렉션()을 확인하십시오. – Shivaas