2009-12-04 23 views
5

Tôi muốn làm điều gì đó như play.clubpenguin.com.Giới hạn khách hàng truy cập trang web có 1 tab và 1 trình duyệt?

Điều gì xảy ra khi bạn truy cập trang web, có thể sử dụng firefox hoặc IE, nếu bạn đã mở tab mới hoặc sử dụng trình duyệt khác, khi bạn truy cập lại trang web đó, nó sẽ hiển thị như sau: "Hãy đóng trình duyệt khác đã mở trang này "hoặc một cái gì đó tương tự.

Cách thực hiện việc này? (Theo yêu cầu khách hàng của nó của)

Thông tin thêm: Các trang web là trang web flash

EDIT:

Ok, tôi nghĩ rằng đây là một câu hỏi hóc búa, tốt, nói chung, có thể này được thực hiện bằng php, mysql và JS?

+0

Từ góc độ người dùng, tôi tự hỏi tại sao bạn muốn hạn chế khả năng của người dùng?
Tại sao bạn muốn tự do đi? –

+0

Ok, đây chỉ là một ví dụ: Giống như chim cánh cụt câu lạc bộ, nếu bạn cho phép đăng nhập nhiều trình duyệt, bạn có thể kiếm tiền theo cách gian lận, giả sử. Bạn đăng nhập với tư cách người dùng A và B. A và B vào phòng chơi nhiều người chơi, Người dùng A đứng đó không làm gì để cho người dùng B kiếm tiền. Vâng, đây chỉ là 1 trong những ví dụ. Và hơn thế nữa, đây KHÔNG PHẢI LÀ Ý TƯỞNG CỦA TÔI, "ĐÓ LÀ YÊU CẦU CỦA KHÁCH HÀNG", tôi cũng đặt CÂU CHUYỆN đó vào câu hỏi của tôi. NẾU BẠN KHÔNG CÓ TRẢ LỜI, KHÔNG TRẢ LỜI L FII L ANSI, TRẢ LỜI NHẬN XÉT. – webdever

+0

Xin lỗi vì mũ. Tôi đang vật lộn và cố gắng hết sức để giải quyết vấn đề này ngay bây giờ. – webdever

Trả lời

0

Một vài lựa chọn mùa xuân để tâm ...

  1. Khi họ lần đầu tiên mở trang web, bạn cần phải lưu trữ tình trạng hiện tại của người dùng trong một cookie hoặc tương tự, mà bạn muốn kiểm tra cho mỗi lần bạn mở trang web. Nếu trạng thái là Hoạt động, thì điều đó có nghĩa là chúng có một cửa sổ khác đang mở. Vấn đề trong việc đảm bảo rằng trạng thái bị xóa khi chúng rời khỏi cửa sổ trang gốc - bạn cần lắng nghe sự kiện window.onunload và xóa trạng thái tại thời điểm đó - nhưng bạn không thể đảm bảo 100% điều này sẽ xảy ra.
  2. Nếu không, bạn có thể đặt tập lệnh trên trang web ping mỗi tập lệnh máy chủ n giây, thông báo cho máy chủ có cửa sổ đang mở cho ứng dụng đó và ngăn cửa sổ mới mở cho đến khi có lỗi trong ping.
  3. Để trở nên phức tạp hơn, bạn có thể duy trì kết nối liên tục giữa máy chủ và ứng dụng khách (thông qua ổ cắm hoặc tương tự), điều này sẽ giữ nguyên lưu ý. Ít cuộc gọi hơn từ khách hàng, phức tạp hơn một chút để thiết lập. Xem http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm để biết thông tin cơ bản về ổ cắm flash +.
  4. Vì bạn đang làm việc với Flash, bạn có thể xem xét các đối tượng chia sẻ cục bộ (cookie flash) để lưu trữ trạng thái. Vẫn có thể bỏ lỡ sự kiện dỡ tải, nhưng ít nhất cookie vẫn được duy trì trên tất cả các phiên trình duyệt và loại trình duyệt.

Tùy chọn 3 là IMHO tốt nhất.

+0

1. Tôi đoán sẽ không hoạt động trên nhiều trình duyệt trên máy khách. –

+0

Tôi mặc dù sử dụng cookie, nhưng sau đó tôi cũng tìm thấy một số vấn đề nếu sử dụng nó. Tùy chọn thứ 3 của bạn nghe hay nhất, nhưng tôi thực sự không có ý tưởng làm thế nào để bắt đầu, tôi có nghĩa là thực hiện nó. Bạn có thể cụ thể hơn trên tùy chọn thứ 3 không ?? – webdever

+0

@Kumar: Bạn có giải pháp nào tốt hơn không? – webdever

0

Nếu bạn muốn cấm truy cập với 2 thông tin đăng nhập khác nhau, bạn có thể thực thi quy tắc khóa trên tài nguyên đã cho.

IP của khách hàng có thể là một trong những nguồn cấp dữ liệu có thể khóa này: chỉ một phiên được phép cho một địa chỉ IP cụ thể. Điều đó sẽ giảm bớt gian lận cho những người có nhiều địa chỉ IP công cộng. Những người chia sẻ IP công khai thông qua proxy sẽ gặp sự cố.

Tôi không thấy tài nguyên có thể khóa nào khác mà bạn có thể sử dụng dễ dàng.

+0

Vâng, tôi nên đề xuất ý tưởng này cho khách hàng của tôi. Bcuz họ muốn mô hình như những gì clubpenguin làm, tức là khi bạn vào trang, thậm chí không đăng nhập trang, họ sẽ nhắc bạn thông báo và yêu cầu bạn đóng mọi trình duyệt/tab mở nó. – webdever

+0

Điều gì về những người đứng sau bức tường lửa, nơi tất cả xuất hiện trong cùng một địa chỉ IP bên ngoài? – Marcus

+0

Oh yeah ... Hầu như quên mất điều này.IP không phải là rất đáng tin cậy .. – webdever

7

Mỗi khi bạn phân phát trang flash cho người dùng, hãy tạo một mã thông báo ngẫu nhiên. Nhúng mã thông báo này vào một nơi nào đó trong trang, ví dụ như một flashVar. Ngoài ra, lưu trữ mã thông báo được tạo gần đây nhất trong phiên của người dùng.

Bất cứ khi nào đèn flash đăng nội dung nào đó về máy chủ, hãy đăng mã thông báo lên. Nếu mã thông báo không khớp với mã thông báo được lưu trữ trong phiên, hãy từ chối bài đăng.

Bằng cách đó, chỉ phiên bản được tạo gần đây nhất của trang mới có khả năng liên lạc với máy chủ và nếu người dùng mở nhiều phiên bản của trang, chỉ trang mới nhất sẽ hoạt động.

Kỹ thuật này sẽ hoạt động ngay cả khi người dùng mở trình duyệt bổ sung trên các máy khác. Nó không sử dụng địa chỉ IP để thiết lập danh tính. Và không có cơ hội nào một người dùng nào đó sẽ bị 'khóa' vĩnh viễn bởi vì mỗi khi họ mở lại trang, bạn đặt lại mã thông báo đã lưu.

Một ý tưởng tương tự như cách một số khung công tác chèn mã thông báo xác thực vào biểu mẫu để ngăn chặn các cuộc tấn công Cross-site Request Forgery.

-1

Giải pháp:

Trả lời khách hàng của bạn yêu cầu bằng KHÔNG, vì bạn là chuyên gia thiết kế web biết điều gì là tốt nhất cho khách truy cập của khách hàng. trang web không phải thu hút khách hàng của bạn mà là khách truy cập của khách hàng. và khi chúng bị giới hạn quá mạnh trên máy tính của chúng, chúng là tất cả nhưng đều hài lòng.

+0

-1: "Điều này không hữu ích" –

2

hãy thử sử dụng mã bên dưới:

window.onload = function(){ 
    if (document.cookie.indexOf("_instance=true") === -1) { 
    document.cookie = "_instance=true"; 
    // Set the onunload function 
    window.onunload = function(){ 
     document.cookie ="_instance=true;expires=Thu, 01-Jan-1970 00:00:01 GMT"; 
    }; 
    // Load the application 
    } 
    else { 
    // Notify the user 
    } 
    }; 

Mã này sẽ hạn chế người dùng mở một tab trình duyệt tại một thời điểm và trong quá trình làm mới trình duyệt (tab hiện tại) mã sẽ không hiển thị bất kỳ cảnh báo. Sao chép dán cùng một URL trong tab mới sẽ không được phép người dùng mở. để biết thêm thông tin, hãy thử this

Các vấn đề liên quan