우리는 PHP 세션을 기반으로 한 로그인 시스템이있는 스트리밍 사이트를 운영합니다. 사용자가 스트림을 시작한 후 다른 사용자가 동일한 계정으로 연결하는 경우 첫 번째 세션을 종료하고 페이지를 종료해야합니다. 내가 생각할 수있는 유일한 방법은 Ajax를 사용하는 것이지만 얼마나 안전한지 잘 모르겠습니다. PHP에서 페이지를 출력하는 방법이 있습니까? 그리고 페이지가 사용자에게 제공 된 후 다른 사용자가 동일한 계정으로 로그인하고 페이지를 죽이는 지 계속 확인하는 스크립트가 있습니까? 출력 버퍼링과 슬립을 사용해 보았습니다. 지금까지는 행운이 없습니다.PHP 연결을 유지하면서 세션 확인하기
답변
우선 데이터베이스 또는 다른 스토리지 시스템의 세션을 추적해야합니다. 이 데이터에는 사용자에 대한 참조가 있어야합니다. 그리고 정기적으로 청소하십시오.
기존 세션을 종료하는 경우 해당 세션의 사용자는 다음 서버 요청까지 푸시되지 않습니다. 따라서 백그라운드에서 서버에 '핑 (ping)'을 수행하고 실패 할 때까지 그냥 ajax 요청을합니다. 실패하면 사용자를 다시 로그인 페이지로 리디렉션하십시오.
이제 이것이 절대 안전한 것은 아닙니다. 클라이언트가 핑 요청을 방해하거나 차단하거나 리디렉션 할 수 있습니다. 그러나 시스템의 다른 페이지에 액세스하려면 다시 로그인해야합니다.
나는 세션을 데이터베이스에 저장하고 있는데, 아약스에 관해서는 클라이언트가 그렇게 쉽게 수정할 수 없도록해야한다. PHP가 잠자기를 사용하고 연결을 유지하면서 데이터베이스를 검사하는 것과 같은 해결 방법 아약스가 있는지 궁금 해서요. 사용자가 영화를 보거나 그/그녀가 사이트를 서핑하지 않기 때문에 그는 서핑하지 않을 것입니다. 어떤 서버 요청을하십시오. 나는 웹 개발에 초보자, 어쩌면 질문 좀 바보입니다 :) – Vodaldrien
HTTP는 상태 비 저장 프로토콜입니다. 그것은 정말로 당신이 세션이 있다는 것을 모르고 걱정하지 않습니다. 세션은 쿠키 (또는 경우에 따라 인증 헤더)를 전달하여 시뮬레이션됩니다. WebSocket을 탐색 할 수는 있지만 브라우저 지원은 여전히 다소 제한적입니다. 그렇지 않은 경우 스트리밍 서버를 사용하고 있다면 스트리밍 서버에서 세션을 유지 관리하는 것이 좋습니다. – datasage
- 1. 아약스로 PHP 세션 확인하기
- 2. CodeIgniter의 뷰에서 세션 확인하기
- 3. 레일즈 : 포스트그레스 레코드와 연결을 유지하면서 Auth0으로 마이그레이션
- 4. Openfire에서 연결을 유지하면서 xmpp에서 사용자를 오프라인으로 표시하십시오.
- 5. 세션 별 폴더 동작을 유지하면서 --basetemp를 지정하십시오.
- 6. 사용자를 확인하기 위해 FBWebDialogs가 세션 쿠키를 누락했습니다.
- 7. PHP : 세션 휴식 세션
- 8. Doctrine이 세션 연결을 올바르게로드하지 않습니다.
- 9. 특정 네트워크 세션 연결을 끊으십시오.
- 10. PHP 세션 보안 로그인
- 11. PHP 세션 시간을 늘리십시오.
- 12. Naive Bayes Neutrals 확인하기 PHP
- 13. symfony (PHP)에서 액션 확인하기
- 14. 오브젝트의 값이 php/laravel인지 확인하기
- 15. PHP - PHP 호출없이 세션 자동 폐기
- 16. PHP 세션
- 17. PHP 세션
- 18. PHP 세션 충돌
- 19. PHP 세션 저장소
- 20. 자바 스크립트로 로딩하기 전에 각 페이지에서 외부 세션 변수 확인하기
- 21. PHP 세션 및 세션 F
- 22. PHP FTP 연결을 강제로 종료
- 23. PHP 쿠키와 세션 변수
- 24. PHP - 임시 제어를위한 세션 사용
- 25. PHP 암호 세션 변수 암호화
- 26. PHP 연결을 mysql 복제
- 27. HDD의 오래된 PHP 세션 파일
- 28. 어떻게 내 서버에 대한 연결을 확인하기 위해 노스 캐롤라이나를 사용
- 29. SSH 연결을 확인하기 위해 bash 스크립트를 만드는 방법은 무엇입니까?
- 30. 네트워크 연결을 확인하기 위해 안드로이드 앱 백그라운드에서 서비스를 실행 중
아약스가 도움이 될 것으로 생각하지 않습니다. 내가 이해한다면 스트리밍을 중단하고 싶을까요? 이것은 스트리밍 서버, 프록시 등을 통해 이루어져야합니다. Ajax는 신뢰할 만하지 않습니다. 세션 데이터가 맞습니다. user_id를 사용하여 session_id를 데이터베이스에 저장하고 모든 요청에 대해 확인하면 새 세션 ID로 인증 할 때 사용자가 로그 아웃됩니다. 다른 장치에서 사용자가 동일한 세션 ID를 사용하는 경우, 처음에 무시해야합니다. –
예, 스트리밍을 중지하는 것이 가장 큰 이유는 사용자가 동영상을 시작한 후에는 로그 아웃하기 위해 요청을 트리거하지 않기 때문입니다. 스트리밍 서버와 프록시에 대해 자세히 살펴볼 것입니다. 감사합니다. – Vodaldrien