2013-01-09 2 views
1

우리는 PHP 세션을 기반으로 한 로그인 시스템이있는 스트리밍 사이트를 운영합니다. 사용자가 스트림을 시작한 후 다른 사용자가 동일한 계정으로 연결하는 경우 첫 번째 세션을 종료하고 페이지를 종료해야합니다. 내가 생각할 수있는 유일한 방법은 Ajax를 사용하는 것이지만 얼마나 안전한지 잘 모르겠습니다. PHP에서 페이지를 출력하는 방법이 있습니까? 그리고 페이지가 사용자에게 제공 된 후 다른 사용자가 동일한 계정으로 로그인하고 페이지를 죽이는 지 계속 확인하는 스크립트가 있습니까? 출력 버퍼링과 슬립을 사용해 보았습니다. 지금까지는 행운이 없습니다.PHP 연결을 유지하면서 세션 확인하기

+0

아약스가 도움이 될 것으로 생각하지 않습니다. 내가 이해한다면 스트리밍을 중단하고 싶을까요? 이것은 스트리밍 서버, 프록시 등을 통해 이루어져야합니다. Ajax는 신뢰할 만하지 않습니다. 세션 데이터가 맞습니다. user_id를 사용하여 session_id를 데이터베이스에 저장하고 모든 요청에 ​​대해 확인하면 새 세션 ID로 인증 할 때 사용자가 로그 아웃됩니다. 다른 장치에서 사용자가 동일한 세션 ID를 사용하는 경우, 처음에 무시해야합니다. –

+0

예, 스트리밍을 중지하는 것이 가장 큰 이유는 사용자가 동영상을 시작한 후에는 로그 아웃하기 위해 요청을 트리거하지 않기 때문입니다. 스트리밍 서버와 프록시에 대해 자세히 살펴볼 것입니다. 감사합니다. – Vodaldrien

답변

1

우선 데이터베이스 또는 다른 스토리지 시스템의 세션을 추적해야합니다. 이 데이터에는 사용자에 대한 참조가 있어야합니다. 그리고 정기적으로 청소하십시오.

기존 세션을 종료하는 경우 해당 세션의 사용자는 다음 서버 요청까지 푸시되지 않습니다. 따라서 백그라운드에서 서버에 '핑 (ping)'을 수행하고 실패 할 때까지 그냥 ajax 요청을합니다. 실패하면 사용자를 다시 로그인 페이지로 리디렉션하십시오.

이제 이것이 절대 안전한 것은 아닙니다. 클라이언트가 핑 요청을 방해하거나 차단하거나 리디렉션 할 수 있습니다. 그러나 시스템의 다른 페이지에 액세스하려면 다시 로그인해야합니다.

+0

나는 세션을 데이터베이스에 저장하고 있는데, 아약스에 관해서는 클라이언트가 그렇게 쉽게 수정할 수 없도록해야한다. PHP가 잠자기를 사용하고 연결을 유지하면서 데이터베이스를 검사하는 것과 같은 해결 방법 아약스가 있는지 궁금 해서요. 사용자가 영화를 보거나 그/그녀가 사이트를 서핑하지 않기 때문에 그는 서핑하지 않을 것입니다. 어떤 서버 요청을하십시오. 나는 웹 개발에 초보자, 어쩌면 질문 좀 바보입니다 :) – Vodaldrien

+0

HTTP는 상태 비 저장 프로토콜입니다. 그것은 정말로 당신이 세션이 있다는 것을 모르고 걱정하지 않습니다. 세션은 쿠키 (또는 경우에 따라 인증 헤더)를 전달하여 시뮬레이션됩니다. WebSocket을 탐색 할 수는 있지만 브라우저 지원은 여전히 ​​다소 제한적입니다. 그렇지 않은 경우 스트리밍 서버를 사용하고 있다면 스트리밍 서버에서 세션을 유지 관리하는 것이 좋습니다. – datasage

관련 문제