2013-04-05 2 views
0

PHP로 응용 프로그램을 설계하고 있습니다. 사용자 디렉토리와 같이 각 사용자의 로그인 상태를 표시해야합니다. 사용자가 연결되어 있는지 (로그인했는지) 알 수있는 안전한 방법이 있습니까?로그인 한 사용자를 계속 추적하십시오.

편집 : 일부 애플리케이션 로직으로 게시물을 업데이트하고 있습니다. 응용 프로그램은 craftsmen 디렉토리에 관한 것입니다. 각 장인이 응용 프로그램에 로그인합니다. 누군가 장인을 찾으면 로그인 한 사람을 볼 수있을뿐만 아니라해야 할 일자리 설명이 담긴 메시지를 보낼 수 있습니다. 장인이 앱에 로그인하는 다른 활동이 없기 때문에 자체 앱은 사용자가 로그인했는지 여부를 "알려주는"방법이 있어야합니다.

+3

아마 안전하다는 것을 의미하는 비트에 의존 할 것입니다. – hakre

+1

어쩌면 그 마지막 활동 이후 시간을 확인해 볼 수 있습니다 (그러한 데이터를 저장하여). 그리고 그 다음에 특정 숫자 (아마 5, 10 또는 20 분)가 로그인 한 사용자로 표시됩니다. 그 외에도 모든 페이지의 클라이언트 측에서 서버를 지속적으로 '핑 (ping)'하여 마지막 페이지로드가 아닌 활성 상태임을 알릴 수 있습니다. –

+0

@Stathis : 신청서의 필요/기능에 따라 다릅니다. 원하는 것은 무엇이든 할 수 있지만 코딩은 안전한 방법이어야합니다. 표시 및 모두 귀하의 요구 사항에 따라 달라집니다. –

답변

0

"안전"이란 "정확함"을 의미합니까?

처음에는 플래그를 LOGGED_IN으로 설정하고 성공적으로 로그인하면 안전합니다. 로그인하는 것이 좋습니다. 그런 다음이 사용자가 다른 페이지를 요청할 때마다 타임 스탬프를 업데이트하십시오. last_update이 15 분의 유예 기간에 도달하면 로그 아웃했다고 가정 할 수 있습니다.

+0

예, 그렇다고해서 연결되어 있는지 알 수있는 확실한 방법이 아닙니다. 내 다른 의견을 확인하십시오. 설명 된 응용 프로그램 논리로 인해 응용 프로그램 사용자가 로그인 (및 비활성) 및 메시지/호출 대기 중일 수 있습니다. – Stathis

1

귀하의 요구 사항에 대해서만 PHP가 어렵다고 생각합니다. socket.io 또는 유사한 것을보십시오. 당신은 longpolling/sse/websockets와 같은 연결을 가진 장인과 함께 이것을 얻을 수 있습니다. html을 제공하는 PHP와 이것을 통합 한 다음 문서 준비가 완료된 클라이언트에서 socket.io 로의 연결을 설정할 수 있습니다.

+0

예, socket.io는이를 수행하는 방법이지만 실행할 기본 Node.js 플랫폼이 필요하며 이는 주 앱이 PHP/Apache/mySQL 환경에서 실행되기 때문에 다소 불편 함을줍니다. 그래도 좋은 제안! – Stathis

+0

그 가치는 무엇입니까 : 당신은 리버스 프록시 (아파치의 mod_proxy)와 함께 php/apache/mysql 옆에 설치할 수 있습니다. 같은 도메인에서 액세스 할 수도 있습니다 : io.example.com은 example.com/io에 매핑됩니다./예를 들어 도메인 간 문제를 피하기 위해 협박하는 것처럼 보일지 모르지만 실제로 그렇게 어렵지는 않으며 장기적으로 당신의 요구에 훨씬 더 잘 맞을 것입니다. –

+0

당신의 제안은 그것을하는 방법이라고 생각합니다. 저는 그것에 대해 긍정적 인 피드백을드립니다. – Stathis

관련 문제