페이지 당 한 명의 사용자 만 사용할 수있는 웹 응용 프로그램을 서버에서 실행하고 있습니다. 페이지가 이미 사용 중인지 확인하고 싶습니다. ts라면 배너의 색상을 빨간색으로 변경하고 사용이 끝날 때까지는 허용하지 않습니다. 그러나 나는 어떻게 이것을 할 수 있는지 모른다. PHP 응용 프로그램이며 일부 자바 스크립트도 사용하고 있습니다. 응용 프로그램은 이미 완료되었지만 지금 구현해야합니다. 페이지가 이미 액세스되고 있는지 확인하는 방법은 무엇입니까?페이지가 이미 액세스되고 있는지 확인하는 방법은 무엇입니까?
0
A
답변
2
<?php
session_start();
$lockfile = 'lock.txt';
$idleSeconds = 300;
if(file_exists($lockfile))
{
// read the file.
// $file[0] = timestamp of last page visit
// $file[1] = session id
$file = file_get_contents($lockfile);
$file = explode('|', $file);
// If the same user is visiting the site he shall pass and refresh the timestamp
// Do the same for a new user when the idletime ran out
if($file[1] == session_id() OR $file[0] + $idleSeconds <= time())
file_put_contents($lockfile, time() .'|'. session_id());
else
die("You are not allowed to view the page. Wait until some other motherfucker is done here.");
}
else
{
// When there's no lockfile create one for the current user
file_put_contents($lockfile, time() .'|'. session_id());
}
?>
<html>
<head>
<title>My locked Page</title>
</head>
<body>
Yeah some cool shit man
</body>
</html>
유일한 PHP를 사용하려는 경우에 대비해 빠르게 뭔가를 조합했습니다. 여기에 lockfile이 있습니다. 페이지를 방문하는 첫 번째 사용자는 세션 ID와 현재 시간 소인을 사용하여 잠금 파일을 생성합니다.
요청할 때마다 잠금 파일이 있는지 확인하고, 그렇다면 사용자가 세션 ID를 확인하여 페이지를 볼 수 있는지 확인합니다. 그런 다음 타임 스탬프를 업데이트합니다.
만약 그가 아니라면 우리는 유휴 시간이 다 되었는 지 확인합니다. 이 경우 다른 사용자가 작업하지 않았기 때문에 로그 파일을 덮어 쓸 수 있습니다. $idleSeconds
이것은 빠르고 간단하지만 기본적인 아이디어를 보여줍니다. 사용자가 익명 사용자가 다음 쿠키를 사용하는 경우 다음, 해당 사용자에 대한 테이블의 페이지 방문을 저장하여 DB에 저장하는 경우)
1
문제의 컨텍스트에 관계없이 개인적으로 이런 종류의 요구 사항을 초래하는 시스템을 만들지는 않습니다. 그러나, 나는 선택의 여지가 없다고 생각할 것이다.
한 가지 방법은 다음과 같습니다
현재 페이지에 클라이언트에서 아약스를 통해 기간 요청을하기 위해 (초기 트리거는 이후 아약스, 페이지로드)입니다.
- 각 요청은 다른 사람이 뛰어 전에 그 사람에게 추가 시간을 제공하는 짧은 타이머를 다시 시작합니다.
타이머가 만료되면 Ajax 요청이 중지 때문에이 페이지를 떠난 가정합니다.
는 정돈 솔루션이 있습니다 Best way to detect when a user leaves a web page? 그들은 사용자가 멀리 이상적으로 당신이 그것을 유지하려는 서버에서 완료되면 결정의 책임을 그러나
.
관련 문제
- 1. 팝업 페이지가 열려 있는지 확인하는 방법은 무엇입니까?
- 2. viewStub가 이미 팽창되어 있는지 확인하는 방법은 무엇입니까?
- 3. 파일이 이미 데이터베이스에 있는지 확인하는 방법은 무엇입니까?
- 4. 알림이 이미 있는지 확인하는 방법은 무엇입니까?
- 5. 데이터가 이미 테이블에 있는지 확인하는 방법은 무엇입니까?
- 6. 쿠키가 이미 있는지 확인하는 방법은 무엇입니까?
- 7. 내 페이지가 operamini 브라우저로 둘러싸여 있는지 확인하는 방법은 무엇입니까?
- 8. 특정 페이지가 Facebook에 묻혀 있는지 확인하는 방법은 무엇입니까?
- 9. IsolatedStorage의 파일이 이미 열려 있는지 확인하는 방법은 무엇입니까?
- 10. Android의 SQLite 데이터베이스에 사용자가 이미 있는지 확인하는 방법은 무엇입니까?
- 11. 주어진 String이 이미 Java String pool에 있는지 확인하는 방법은 무엇입니까?
- 12. MySQL 데이터베이스가 PHP에 이미 있는지 확인하는 방법은 무엇입니까?
- 13. Expression Encoder 4가 이미 설치되어 있는지 확인하는 방법은 무엇입니까?
- 14. 런타임에 추가하기 전에 TabBar 항목이 이미 있는지 확인하는 방법은 무엇입니까?
- 15. 엔티티가 이미 데이터베이스에 있는지 확인하는 가장 빠른 방법은 무엇입니까? 순간
- 16. IP가 이미 mysql에 저장되어 있는지 확인하는 방법은 무엇입니까?
- 17. 요소가 이미 이해력을 통해 목록에 있는지 확인하는 방법은 무엇입니까?
- 18. 라이브러리에 Android가 이미 설치되어 있는지 확인하는 방법은 무엇입니까?
- 19. jQuery 플러그인이 이미 DOM 노드에 바인딩되어 있는지 확인하는 방법은 무엇입니까?
- 20. 팝업 대화 상자가 이미 열려 있는지 확인하는 방법은 무엇입니까?
- 21. 준비된 문이 이미 Ruby에 있는지 확인하는 방법은 무엇입니까?
- 22. Oracle Data Access Components가 이미 설치되어 있는지 확인하는 방법은 무엇입니까?
- 23. 코어 데이터가 이미 값을 갖고 있는지 확인하는 방법은 무엇입니까?
- 24. Google 어스 플러그인 - ID가있는 요소가 이미 있는지 확인하는 방법은 무엇입니까?
- 25. 사용자 이름이 이미 데이터베이스에 있는지 확인하는 방법은 무엇입니까?
- 26. ADO.Net Data Services에서 엔티티가 이미 컨텍스트에 있는지 확인하는 방법은 무엇입니까?
- 27. rss 플러그인이 이미 Chrome에 설치되어 있는지 확인하는 방법은 무엇입니까?
- 28. 양식이 이미 표시되어 있는지 확인하는 적절한 방법은 무엇입니까?
- 29. Google 시트 스크립트, 이미 배열에 문자열이 있는지 확인하는 방법은 무엇입니까?
- 30. PHP : PDO : 전자 메일이 이미 등록되어 있는지 확인하는 방법은 무엇입니까?
,
해피 코딩. –
세션을 사용하여 관계를 저장할 수 있습니다. 사용자/bannercolor – zeflex
페이지가 "이미 사용 중"인 경우 어떻게 정의합니까? "사용 완료"를 어떻게 정의합니까? 페이지에 어떤 종류의 조치가 취해 있습니까? –