2011-11-01 5 views
0

내 웹 사이트에 현재 로그인 한 사용자를 얻는 방법. 나는 유지 관리를위한 mysql 테이블을 가지고있다.mysql에서 현재 로그인 한 사용자를 얻는 방법은 무엇입니까?

내가 로그인 이름을 표시하는 방법을 모르겠어요.

+0

너무 일반적인 질문입니다. 최소한 사용자 테이블의 구조를 게시하십시오. – aleroot

+0

커뮤니티에 전체 솔루션을 제공하라는 요청 대신 본인 스스로이 문제를 해결하려고 시도했습니다. 비록 당신이 어떤 노력을했는지 우리에게 보여주기위한 몇 가지 코드가있다면 (틀린 경우 라 할지라도) 질문과 국기를 다시 열어 다시 열어주십시오. 감사. – Kev

답변

6

isOnline 필드는 다른 제안 사항과 같이 사용하지 마십시오. 대신 lastSeen 필드를 사용하십시오. 해당 필드에 타임 스탬프를 넣고 모든 페이지보기에서 업데이트 할 수 있습니다.

시스템에서 쉽게 이동하려면 매 2 분마다 업데이트하십시오 (lastSeen의 최종 업데이트 타임 스탬프가 포함 된 사용자 세션의 변수 $lastUpdate).

"온라인"사용자를 찾으려면 마지막 X 분 (예 : 10 분)에 lastSeen 인 모든 사용자를 선택할 수 있습니다.

정확한 온라인 사용자 수를 알 수 없습니다. 사용자가 내 페이지를보고 있거나 내 페이지를 이미 닫았는지 알 수 없기 때문입니다. 어쨌든이 해결책은 좋은 근사치입니다.

방문자 수에 따라 매 시간 또는 매일, 이전 항목을 삭제하는 프로세스를 실행할 수 있습니다.

+0

isOnline보다 낫습니다. –

-1

을 나는 당신이 당신의 데이터베이스에 그에 대한 플래그를하거나 일부 임시 디렉토리에있는 모든 사용자에 대한 파일을 만들 필요가 있다고 생각합니다.

2

필드 'isOnline'사용자 테이블에서, 값이 0 또는

1. 때마다, 당신은 1로 업데이트하고, 사용자가 로그인 사용자가 로그 아웃 할 때마다 '이 될 것이다이 있어야합니다 당신은 열 이름 isOnline을 만들고 그것이 사실 때 사용자가 온라인을 설정할 수 있습니다

SELECT * FROM `users` WHERE `isOnline`='1' 
+1

사용자가 로그 아웃하지 않고 페이지를 떠날 경우 어떻게해야합니까? 영원히 온라인 : – dwalldorf

+0

@entek 네 말이 맞아. 이미 플래그 열을 사용하여 시도했습니다.사용자가 로그 아웃하지 않고 그냥 페이지를 떠난다면 어떻게 될까요? – w3father

+0

그래서 당신은 사용자가 귀하의 사이트에 있는지 여부를 확인하는 자바 스크립트 또는 그와 비슷한 것이 필요합니다. 어쩌면 당신은 뭔가 [여기]를 찾을 수 있습니다 (http://stackoverflow.com/questions/147636/best-way-to-detect-when-user-leaves-a-web-page) – dwalldorf

0

: 0

현재 온라인 사용자에게 업데이트하겠습니다을 검색 할 수 있습니다. 그런 다음 isAvailable 열을 사용하여 쿼리하십시오.

select * from users where isOnline = 'Y'; 
+0

Ananth의 게시물과 같은 질문 : 사용자가 로그 아웃하지 않고 페이지를 떠난다면 어떻게 될까요? – dwalldorf

+0

@ stivlo의 해결책은 훨씬 더 좋습니다 :) –

0

status 같은 어떤 이름으로 데이터베이스에 사용자 테이블의 필드를 생성하는 것입니다 당신과 값 로그인에 true 및 로그 아웃에 false과 로그 아웃, 그냥 사실을 확인 사용자 로그인에 제출 및 업데이트에 적합 당신에게 모든 로그인 사용자를 제공 할 가치 ...

1

내 접근 방식은 사용자 세션 토큰이있는 테이블을 갖는 것입니다. 세션 기록에서 사용자가 사이트 타임 스탬프를 방문 할 때마다 지금 설정됩니다. 세션이 일정 기간 동안 만지 지 않으면 세션이 만료되어 테이블에서 삭제됩니다 (cronjob 또는 일부 사용자 요청에 의해 가비지 수집으로). 로그 아웃시에도 마찬가지입니다. 구조는 sessid, user_id, last_seen_ts입니다. 이 테이블을 사용자와 조인하여 이름을 가져올 수 있습니다. 비록 하나의 테이블만을 사용하여 수행 할 수 있습니다 - 플래그 isOnline을 저장할뿐만 아니라 로그 아웃하지 않고 사이트를 방금 떠난 사용자를 만료시키기위한 일부 타임 스탬프.

관련 문제