2010-11-28 3 views
1

방문자가 한 번에 하나의 웹 페이지 만 볼 수있는 시스템을 설정하고 싶습니다. 하나의 브라우저 창이나 탭만 허용되어야합니다.사용자 추적 및 php/javascript로 여러 창/탭 허용 안함

"is_viewing"이라는 세션 변수를 구현했습니다. 그것이 사실이라면, 사람은 페이지에 대한 액세스가 거부됩니다 (단순히 다른 템플릿을 보여줌으로써).

사용자가 한 페이지에서 다른 페이지로 이동할 때이 세션 변수를 재설정하는 가장 좋은 방법은 무엇입니까?

html 본문의 onunload 이벤트에 ajax 함수를 추가했습니다. 모두 세션 변수를 false로 설정합니다.

그러나 이것은 모든 종류의 문제와 예기치 않은 결과를 가져옵니다. 페이지를 새로 고침하면 거부 템플릿이 표시됩니다 (어떤 이유로 세션 변수가 true로 표시됨). 그리고 새로 고침을 한 후에 페이지를 다시로드 할 수 있습니다.

ajax로 호출되는 스크립트에서 헤더를 사용할 수 없습니까? 그 밖의 다른 방법으로 세션 변수를 재설정하고 사용자가 이미 다른 페이지를보고있는 경우 액세스를 거부하는 사이트를 추적합니다.

+2

왜 이것을 원합니까? 사용자가 실제로 여러 창이나 탭을 보려는 경우 Javascript를 비활성화 할 수 있습니다. –

+0

라이브 비디오 피드가있는 여러 페이지가 있습니다. 사람들이 한 번에 여러 페이지를 볼 수 없도록해야합니다. 자바 스크립트를 사용 중지하면 동영상이 표시되지 않습니다. 따라서 사이트는 자바 스크립트에서만 사용할 수 있으며 자바 스크립트가 해제 된 사람들에 대해서는 걱정할 필요가 없습니다. – user478419

+1

IP 당 하나의 스트림 만 허용하거나 스트리밍 할 때 확인하는 쿠키를 설정하고 쿠키 ID 당 하나의 스트림 만 허용하십시오. – Rahly

답변

0

사람들이 실제로 그 일을하지 못하게하려면 서버의 IP 당 연결 수를 제한하십시오. 그러나 여러 대의 PC를 가지고있을 때 온 가족이 잠기는 것을 피하기 위해 1 대 정도로 제한하지 마십시오.

명 기꺼이, (다른 브라우저를 실행하여 예를 들어) 그 한계를 무시하고 각 사용자에게 쿠키를 제공하고 서버에 쿠키 당 연결 수를 제한 할 때 괜찮아 경우 -. 새로운 들어올 때 오래된 연결을 죽일