문제

데이터베이스에 로그인, 로그 아웃 및 지속 시간을 저장하고 싶습니다.

  • 로그인 시간은 사용자가 인증 될 때 생성됩니다 (성공적으로 로그인)
  • 사용자가 로그 아웃 버튼을 클릭하면 로그 아웃 시간이 생성됩니다.
  • 지속 시간은 로그 아웃 - 로그인 시간입니다. (로그 아웃 마이너스 로그인)

그러나 문제는 사용자가 로그 아웃 버튼을 클릭하지 않으면 어떻게 될까요? 상황은 다음과 같습니다.

  • 인터넷 손실
  • 브라우저/탭을 닫습니다. (나는 이것을 JavaScript를 사용해야하지만, 어떻게 해야하는지, 어떤 아이디어라도 도니지해야합니까?)

편집하다:

질문에 무언가를 추가하는 것을 잊었습니다. 프로그램은 전체 플래시 프로그램이며 다른 페이지에 대한 탐색이 없습니다. 1 페이지 만

도움이 되었습니까?

해결책

브라우저를 닫거나 인터넷에서 사라지면 사용자 로그 아웃 이벤트를받는 데 의존 할 수 없습니다.

이 경우 어떤 종류의 세션 시간 초과가 있어야하고 앱에서 세션이 너무 오래되었다는 것을 알면 로그 아웃을 기록해야합니다.

이것이 실제 요구 사항이라면 타임 아웃 세션을 모니터링하는 "Cron"작업이 필요하다고 말합니다. 세션이 시간이 초과되면 로그온하면 해당 사용자에 대한 "로그 아웃"이벤트를 기록합니다.

예를 들어 ASPNET의 Session_end 이벤트를 사용할 수 없습니다 (예 : 서버 프로세스가 다시 시작되는 경우)를 안정적으로 호출하지 않기 때문입니다.

또 다른 옵션은 다음에 사용자 로그인 할 때 로그 아웃 시간을 추가하는 것입니다. 로그온하면 이전 세션을 확인하고 마지막 페이지에 닿은 이후 정해진 시간 동안 닫히지 않은 시간이 지속되었다고 가정합니다.

그게 정말 당신이 할 수있는 전부입니다.

다른 팁

PHP의 모든 세션/로그인 기능이 대개 쿠키 기반. 따라서 세션 쿠키의 수명을 변경하면 문제가 해결됩니다.

http://us3.php.net/manual/en/function.session-set-cookie-params.php

또한 PHP 세션을 설정하여 쿠키 만 사용할 수 있습니다.

http://us2.php.net/manual/session.configuration.php#ini.session.use-odly-cookies

다시, 브라우저 창 / 탭을 닫을 수는 있지만 ... 왜? 예를 들어 여러 탭에서 귀하의 사이트를 열 수 있습니다. 해당 탭 중 하나를 닫으면 웹 사이트에서 자동으로 로그인해야합니까? 그것은 매우 나쁜 디자인입니다. 대신, 세션 수명을 설정하여 브라우저 탭이 아니라 닫힙니다. (또한 참고하십시오 window.unload 때 로그 아웃합니다 어느 팝업 또는 iframe을 포함하여 닫는 사이트의 창. 정말 원해?)

http://us2.php.net/manual/session.configuration.php#ini.session.cookie-lifetime

세션 상태를 데이터베이스에 저장하려면 하나 이것들 가이드. 또는 자신을 굴립니다 session_set_save_handler

브라우저/탭의 폐쇄와 관련하여 unload 이벤트 (window.onunload, jQuery 's $(window).unload(fn), 서버에 알리는 것입니다. 보다 일반적인 목적 솔루션은 정기적으로 서버를 핑하는 것이지만 (예 : 5 분마다) 사용자에게 성가시킬 수 있으므로 신중하게 그렇게하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top