2010-07-21 8 views
2

인증을 위해 인증 구성 요소를 사용하고 장바구니를 저장하기 위해 세션 구성 요소를 사용하여 전자 상거래 프로젝트를 진행하고 있습니다.브라우저가 활성화되어 있어도 CakePHP 세션이 만료됩니다.

문제는 내가 적극적으로 사이트를 탐색 중이더라도 잠시 후에 세션이 삭제된다는 것입니다. 나는 이것이 세션 타임 아웃 때문에 있어야한다는 것을 알고 있지만, 타임 아웃 값을 증가시키는 것은 내가 찾고있는 해결책이 아니다.

사용자가 브라우저를 닫을 때만 세션이 만료되기를 원합니다. 이것이 성취 될 수 있습니까?

+0

오 ... 내 세션은 내가 활발하게 내 장바구니를 클릭했을 때도 삭제되었습니다. 내 코드에 문제가있을 수 있습니까? –

+0

php.ini 설정을 확인하십시오. – Leo

답변

1

AFAIK 당신이 할 수있는 일은 먼 미래의 세션 타임 아웃 변수를 설정하는 것입니다. 세션은 브라우저가 닫힐 때 자동으로 지워 집니다 (사용자가 내 정보 기억 (Remember Me) 유형 쿠키를 설정하지 않은 경우). 미래로 그것을 멀리 놓는 것은 당신이해야하는 것을 효과적으로 성취 할 것입니다.

세션에 얼마나 오래 걸리나요? 사용자가 일정 기간 동안 비활성 상태 인 경우에만 시간 종료해야합니다. 중간 요청 시간이 초과되어 시간 초과 시간이 경과하지 않았다는 것을 알고 있으면 다른 문제가 계속 발생합니다. 보안 수준과 세션 타임 아웃과 관련하여 core.php 파일의 설정은 무엇입니까?

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. Security.level을 high로 설정하고 Session.timeout을 120 초로 설정합니다. 귀하의 제안에 따라 타임 아웃을 더 높은 값으로 설정할 수 있지만,이 경우 브라우저를 닫고 나중에 다시 돌아올 때도 세션이 활성 상태로 유지됩니다. 어쨌든 브라우저가 클라이언트 쪽에서 닫혀 있는지 확인하는 방법은 없습니다. –

+0

보안 수준을 높음으로 설정하면 세션 시간 초과 인 IIRC를 넘어서는 다른 의미가 있습니다. med | high 일 때 referer 점검을 추가합니다. 높음으로 설정하면 모든 요청마다 * 세션 ID가 재생성됩니다. 나는 그걸 매체로 바꾸라고 조언합니다. 그런 다음 브라우저를 닫을 때 (전체 브라우저가 해당 탭이 아니라 종료해야합니다 ... 작업 관리자가 사라 졌는지 확인하십시오) 세션이 닫힙니다. 그리고 네, 당신은 브라우저가 클라이언트 측에 폐쇄되었는지 확인할 수 없습니다. –

+0

좋아, 고마워 ... 나는 그것을 매체로 바꿨다. 그리고 일은 지금까지 잘 작동하고있다! :) –

관련 문제