2010-04-02 24 views
8

Tôi đang làm việc trên một trang web (html, css, javascript, ajax, php, mysql) và tôi muốn giới hạn số lần người dùng cụ thể bỏ phiếu cho một video cụ thể.Trang web. Video VoteUp hoặc VoteDown. Cách hạn chế người dùng bỏ phiếu nhiều lần?

Tương tự với hệ thống YouTube nơi bạn có thể voteUp hoặc voteDown video cụ thể.

Mỗi phiếu có liên quan đến việc thêm hàng vào bảng video.votes, nhật ký thời gian, bỏ phiếu (lên hoặc xuống), IPaddress của khách hàng (sử dụng PHP: $ ip = $ _SERVER ['REMOTE_ADDR'];), và tất nhiên ID của video được đề cập đến.

Thêm phiếu bầu cũng đơn giản như; (pseudocode): Javascript: onClick (bỏ phiếu (a, b, c, d)), chuyển các biến sang tập lệnh chèn PHP qua ajax và cuối cùng chúng tôi thay thế các nút bỏ phiếu bằng thông báo "Cảm ơn bạn đã bỏ phiếu".

CÁC VẤN ĐỀ:

Nếu bạn tải lại/làm mới trang sau khi bỏ phiếu, bạn có thể bỏ phiếu một lần nữa, và một lần nữa, và một lần nữa, bạn sẽ có được điểm.

TÔI HỎI:

Làm thế nào để bạn giới hạn số lần một người dùng cụ thể phiếu bầu cho một video cụ thể ??

THOUGHTS CỦA TÔI:

Bạn có sử dụng cookie và thêm cookie mới có id của video không. Và kiểm tra cookie trước khi bạn bỏ phiếu mới.

HOẶC

Trước khi bạn chèn bỏ phiếu, làm bạn sử dụng IPADDRESS và videoid để xem nếu thành viên này cùng (IP) đã bình chọn cho cùng một đoạn video này (vidID) trong vòng 24 giờ qua (mktime), và cho phép hoặc không cho phép bình chọnInsertion dựa trên truy vấn này?

HOẶC

Bạn không quan tâm? Hãy giả định rằng hầu hết người dùng là lành mạnh, và có những điều tốt hơn để làm hơn làm mới các trang và bỏ phiếu nhiều lần. ??

Bất kỳ đề xuất hoặc ý tưởng nào được chào đón.

Trả lời

4

Bạn có sử dụng cookie và thêm cookie mới có id của video không. Và kiểm tra cookie trước khi bạn bỏ phiếu mới.

Cookie có thể dễ dàng bị tắt hoặc xóa rất nhanh. Việc lưu phiếu bầu cho một cookie không đáng tin cậy và phiếu bầu có thể được chơi với không có vấn đề gì.

Trước khi bạn bỏ phiếu, bạn có sử dụng IPaddress và videoID để xem liệu cùng một người dùng (IP) này đã bỏ phiếu cho cùng video này (vidID) trong 24 giờ qua (mktime) và cho phép hay không không cho phép voteInsertion dựa trên truy vấn này?

Nhiều người dùng có thể đang sử dụng cùng một bộ định tuyến, có cùng địa chỉ IP. Bằng cách này, bạn có thể gây khó chịu cho người dùng bằng cách ngăn họ bỏ phiếu vì một người khác từ cùng một văn phòng/hộ gia đình đã bỏ phiếu cho video trước khi gửi cho họ liên kết.

Bạn không quan tâm? Hãy giả định rằng hầu hết người dùng là lành mạnh, và có những điều tốt hơn để làm hơn làm mới các trang và bỏ phiếu nhiều lần.

Điều này hoàn toàn chủ quan và phụ thuộc vào tầm quan trọng của phiếu bầu. Nếu bầu cử là một phần quan trọng của trang web, tốt nhất bạn nên quan tâm nhiều nhất có thể. Ví dụ: nếu video được sắp xếp theo xếp hạng cao nhất, một số người dùng có thể bỏ phiếu nhiều lần để tăng mức độ phổ biến của video yêu thích/cá nhân của họ, tạo ấn tượng về mức độ phổ biến để thu hút nhiều lượt xem hơn.

Nơi bỏ phiếu quan trọng, tốt nhất là chỉ cho phép người dùng đã đăng ký bỏ phiếu. Chắc chắn, mọi người có thể và sẽ tạo nhiều tài khoản để bỏ phiếu (xem http://gallery.live.com để biết ví dụ), nhưng bạn đang gây khó khăn cho họ nhiều hơn. Nếu bỏ phiếu không thực sự quan trọng, tôi sẽ đi với tùy chọn cookie.

+0

Có nhiều cử tri là những gì cố gắng tránh, vì chủ sở hữu videoX có thể tăng cường mức độ phổ biến của nó một cách đáng kể. Ill prob đi kèm với một đăng ký và đăng nhập để bình chọn hoặc để lại bình luận trên video. Cảm ơn nhiều người ... –

+0

Bạn sẽ làm gì để ngăn không cho cùng một người đăng ký nhiều lần? – Pointy

+0

@Pointy: Ngay cả Google, YouTube, Microsoft và eBay có vấn đề với điều đó. Họ vẫn sử dụng các hệ thống tương tự cho xếp hạng (phản hồi cho eBay). Có rất ít điều bạn có thể làm để ngăn người dùng thực sự muốn bỏ phiếu nhiều lần, bất kỳ cách nào bạn nhìn vào nó. Ngay cả với ví dụ về tài khoản ngân hàng của bạn - tài khoản ngân hàng gian lận được thiết lập mọi lúc. –

3

Nếu bạn không thực sự quan tâm, cụ thể là về hiệu ứng 4chan, bạn chỉ có thể sử dụng cookie. Đừng đi vào địa chỉ IP, bởi vì có rất nhiều người đứng đằng sau những bộ định tuyến NAT chung trên khắp nơi.

Nếu bạn quan tâm nhiều hơn một chút, bạn phải xác thực mọi người, nhưng không có một số loại mã thông báo bên ngoài để xác định cá nhân thực sự, bạn vẫn gặp sự cố. Nó phụ thuộc vào bản chất của trang web của bạn, tất nhiên. Ví dụ: trang web ngân hàng tại nhà có thể hỗ trợ bỏ phiếu với sự tự tin hơn vì nó có thể xác định người dùng có số tài khoản thực.

3

Tôi sẽ sử dụng phương pháp tiếp cận cookie. Nó cho phép để xác định người dùng duy nhất (đối với những người chấp nhận cookie) trong khi IP đó là một cách tiếp cận xấu vì nhiều người dùng có thể chia sẻ cùng một địa chỉ IP.

Nếu trang web sử dụng thông tin đăng nhập, có thể bạn có thể xem xét tùy chọn chỉ cho phép người dùng đã đăng nhập bỏ phiếu. Trong trường hợp này, rất dễ để biết nếu một người dùng đã bình chọn, nhưng rất hạn chế.

2

Có lẽ lời khuyên tốt nhất là chỉ cho phép người dùng đã đăng ký bỏ phiếu.Bằng cách đó bạn có thể truy vấn WHERE user_id = 'x' and video_id = 'y', nếu hồ sơ được tìm thấy, đừng để anh ta bỏ phiếu.

Than ôi, đối với người dùng ẩn danh, điều đó có thể phức tạp. Rất nhiều địa chỉ IP được chia sẻ trên mạng, do đó, người dùng trong cùng một tòa nhà với nhau có thể chỉ bỏ phiếu một lần.
Tùy chọn cookie có thể tốt, ngoại trừ chúng có thể bị xóa. Bạn không thể tin tưởng bất cứ điều gì về phía người dùng.

1

Nếu bạn thực sự cố gắng để ngăn chặn nhiều số phiếu:

  1. Chỉ cho phép người dùng đã xác thực bỏ phiếu
  2. Lưu trữ phiếu trong một cơ sở dữ liệu để kiểm tra chống
  3. Ngoài ra cửa hàng phiếu trong cookie để làm kiểm tra ban đầu và giảm tải trên cơ sở dữ liệu.

Nếu bạn không thực sự quan tâm, chỉ cần sử dụng cookie.

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