2012-03-08 4 views
1

이 사이트에는 사용자가 매우 오랜 기간 (경우에 따라 일, 주, 어쩌면 몇 달) 동안 로그인해야하는 상황이 있습니다. 문제는 서버 로그에서 로그인하지 않은 상태로 끝나기 때문에 연결 시도가 로그인 페이지로 리디렉션되는 결과를 초래한다는 것입니다.PHP - 사용자가 로그 아웃되지 않도록하기

이것은 분당 자동으로 연결되는 클라이언트입니다.

특정 상황 (정전, 컴퓨터가 절전 모드로 전환되거나 다른 네트워크가 중단되는 경우)에서 로그 아웃되는 것으로 보입니다. 일반적으로 사용자는 매분마다 서버에 연결하여 로그인 상태를 유지해야합니다. 그렇습니까? 며칠 동안 연결을 유지하고 전체 시간 동안 기록되었습니다.

내 관련 세션 설정은 다음과 같습니다

session.cache_expire  180 
session.cookie_lifetime 0 
session.gc_maxlifetime  1440 
session.use_cookies On 
session.use_only_cookies Off 

상태에서 기록의 검사는 젠드 프레임 워크의 Zend_Auth에 의해 처리됩니다. 내가 하루 이상 로그인 한 상태로 있으면 cache_expire 한도 또는 gc_maxlifetime으로 실행되지 않는다는 의미일까요?

로그 아웃을 시뮬레이션 할 수있는 유일한 방법은 연결을 설정하고 (세션을 설정 한 후) 컴퓨터를 오프라인 상태로 두는 것입니다. 다음날 다시 온라인 상태가되어 클라이언트가 계속 연결을 시도하면 (자동으로 수행됨) 로그 아웃되었음을 발견했습니다.

내 질문에.

  1. 는 클라이언트가 올바른 로그 아웃 될 수 있습니다 왜 내 평가인가?

  2. 그렇다면 (또는 그렇지 않은 경우에도) 이러한 로그 아웃을 방지하려면 어떻게해야합니까? 다양한 세션 시간 제어 설정을 확장하십시오.

+0

사용자가 로그인했음을 나타내는 쿠키를 삭제하고 해당 사항을 확인할 수 있습니까? –

+0

http://samy.pl/evercookie/을보세요 - 정말 불쾌하지만 일을 끝내게됩니다. – AlienWebguy

답변

4

귀하의 문제는 기본적으로 클라이언트가 자신의 브라우저를 닫을 때까지 세션 쿠키에만 활성화된다는 것을 의미합니다 session.cookie_lifetime 0입니다. 1 년과 같은 높은 가치로 설정할 수 있습니다.

자세한 내용은 the PHP documentation을 참조하십시오.

+0

이것은 유망한 것으로 들립니다.이러한 설정은 모두 "기본"설정입니다. 나는 이것이 디폴트 였음을 깨닫지 못했다. – Stuart

+0

@ gaoshan88 실제로 이것은 귀하의 수정 사항입니다. 당신은 기본적으로 쿠키를 0으로 설정하지 않습니다. 그것은 단지 브라우저 세션입니다. 60 * 60 * 24 * 30으로 설정하고 한 달 이상 지속하십시오. – Shackrock

+0

@Shackrock 물론 쿠키가 있습니다. 그것은 내 대답과 PHP 문서에서 모두 잘 설명되어 있습니다. – Basti

1

로컬라이제이션 된 방화벽, 쿠키 설정 또는 동적 IP 문제와 관련하여 로그 아웃이 전원 격자와 관련이 있는지 의심 스럽지만 귀하의 평가가 합리적이라고 생각하십니까?

아약스를 사용하여 세션 시간을 지속적으로 업데이트 해 보았습니까? 이 방법을 여러 번 성공적으로 사용했습니다 :

여기 내가 아이디어를 발견했습니다. 문제의 간결한 대우입니다. 도움이

http://brian.moonspot.net/2008/05/14/php-session-cookie-refresh/

희망! A

관련 문제