2013-10-10 3 views
0

그래서 Codeigniter에서 세션 시간이 초과 될 때 로그인 페이지로 리디렉션되는 데 문제가 있습니다. 이것은 아마도 내 인생에 정말 기본적인 실수,하지만 난 내 컨트롤러에 사용하고 코드는 다음과 같습니다Codeigniter에서 세션 시간 초과 리디렉션

if(!$this->session->userdata('is_logged_in')) { 
    redirect('login/'); 
} 

그것은 지금까지 로그인 페이지로 사용자를 리디렉션으로 작동하지만 로그인을 다시 반복 유지 페이지. 왜 이런거야?

+0

CI를 모르지만 로그인 페이지에서도 해당 코드를 실행하고있을 수 있습니다. –

답변

1

is_logged_in이라는 세션에 데이터가 없기 때문일 수 있습니다.

세션 데이터 란 : 당신이 manual를 볼 경우, 당신은 세션에 저장되어있는 기본 데이터를 볼 것인가?

사용자의 고유 한 세션 ID (이 MD5로 해쉬 된, 매우 강한 엔트로피와 통계적으로 임의의 문자열 입니다 :

세션은, 지금까지의 CodeIgniter의에 관한 한, 간단하게 다음과 같은 정보를 포함하는 배열 입니다 (기본값으로) 5 분마다 이 재생성됩니다. 사용자의 IP 주소 사용자의 사용자 에이전트 데이터 (브라우저 데이터의 처음 120 자) 문자열 "마지막 활동"시간 소인.

당신은 is_logged_in를 설정하면 사용자가 로그인 또는 session_id 또는 last_activity처럼 거기에 이미 무언가를 사용하는 중 하나가 필요합니다.

+0

이것은 실제로 문제가되었습니다. 감사합니다 Stormdrain. – duckie715

1

사용자가 로그인 페이지에 있지 않은지 확인해야합니다. 요청이있을 때마다 실행되는 것 같습니다. 이 같은

뭔가를 수행해야합니다

if(!$this->session->userdata('is_logged_in') && !strstr(current_url(), 'login/')) { 
    redirect('login/'); 
} 

또한 stormdrain 말했듯이, 세션 데이터가 설정되어 있지 않은 것을 수 있습니다.