2011-09-21 3 views
1

사용자가 브라우저를 닫거나 PC를 다시 시작하여 로그 아웃하면 데이터베이스에 로그 아웃 시간을 저장하려면 어떻게해야합니까?PHP + MYSQL, n 분마다 DB에서 로그 아웃 시간을 업데이트해야합니다.

+1

'PC를 시작하여'어떻게 로그 아웃을 시작합니까? '서버 닫기'로 브라우저를 종료 하시겠습니까? – Shad

+0

죄송합니다. PC를 다시 시작하고 브라우저를 닫아서. – shobana

답변

0

일종의 사용자 핑으로 관리했습니다. 내 웹 응용 프로그램의 모든 페이지는 자바 스크립트를 사용하여 매분마다 특정 PHP 파일을 가져옵니다. 이 파일은 사용자를 식별하고 사용자 테이블의 마지막 활동 시간 소인을 업데이트합니다. 서버에서 2 분마다 트리거하는 cronjob을 만들었고 usertable에서 2 분보다 오래된 마지막 활동 시간 소인을 확인합니다. 2 분이 넘은 시간 소인이 있으면 사용자를 "로그 아웃"으로 표시 할 수 있습니다. 이렇게하면 사용자는 한 페이지에 많은 시간을 할애 할 수 있으며 비활성으로 인해 로그 아웃되지 않습니다. 그가 브라우저를 닫거나 PC를 다시 시작하면 로그 아웃 타임 스탬프는 cronjob에 의해 설정되며 꽤 정확합니다.

이 솔루션은 잘 작동하지만 자바 스크립트 타이머를 사용합니다. 정말 좋지는 않지만 꽤 괜찮은 것입니다. 귀하의 페이지가 이미 다른 자바 스크립트를 많이 사용하고 있다면 다른 솔루션을 사용해야합니다.

0

물리적으로 로그 아웃 버튼을 클릭하지 않는 경우 (로그 아웃 시간을 기록하는 경우) 로그 아웃 시간을 세션 만료로 설정해야합니다. 이 방법을보다 정확하게 사용하려면 세션 수명을 2 ~ 3 분으로 줄이십시오. 따라서 몇 분 동안 사용하지 않으면 세션이 만료되고 사용자가 소프트웨어 사용을 중단했을 때 로그 아웃 시간이 상대적으로 가까워집니다. 이 정보를 기록하는 방법은 아래를 참조하십시오. 크론 작업 또는 자바 스크립트 구현이 필요합니다.

아마도이 두 가지 센트는 아마이 작업을 수행하는 더 좋은 방법 일 것입니다. 그러나이 방법은 나에게 가장 쉬운 것으로 보입니다.

+0

짧은 세션 시간에는주의해야합니다. 예를 들어 CMS에서 사용자가 30 분 동안 무언가를 편집하는 것이 합법적 인 경우 "저장"을 클릭하면 세션이 삭제됩니다. – codercake