Yêu cầu thg 4 10, 2018 8:58 SA 131 2 1
  • 131 2 1
+1

Một vấn đề cần sự giúp đỡ của mọi người.

Chia sẻ
  • 131 2 1

Mọi người có thể cho em hỏi cách để tăng lượt view cho bài viết an toàn + tường minh được không ạ? Tại vì nếu e làm theo cách bình thường thì cứ F5 / update thì hơi đuối. Session thì người dùng có thể xóa lịch sử.. Vì e chưa có kinh nghiệm + chưa code features này bao giờ nên mong mọi người thông cảm và giúp em ạ..

  • E xin cám ơn.

1 CÂU TRẢ LỜI


Đã trả lời thg 4 10, 2018 10:20 SA
Đã được chấp nhận
+3

Cụ thể thì em muốn tăng lượt view như thế nào, và như thế nào là an toàn 🤔

Về logic tăng lượt view thì có vài cái em có thể tham khảo:

  • Mỗi lần access vào bài viết là 1 lần tăng: cách này đơn giản nhất, chỉ cần set tăng view ở Controller là được. Tuy nhiên dẫn dễ by pass bằng F5 (như em có đề cập), bằng câu lệnh curl, hay những đoạn script đơn giản
  • Mỗi lần access vào bài viết là 1 lần tăng count, đồng thời lưu lại post_id cùng timestamp vào session của user. Nếu user reload lại trình duyệt thì check trong session ra kiểm tra xem có post_id không, và timestamp có gần đây không. Nếu hợp lệ thì mới tăng view. Cách này, như em nói, nếu user xoá cookie để update session (hoặc dùng Private Tab, Incognito Mode trên Chrome, Firefox ...) thì sẽ by pass được, ngoài ra, nó cũng không chống được curl thần thánh 😄
  • Mỗi lần access vào bài viết, thì chưa tăng view vội, chỉ add post_id cùng timestamp vào session của user thôi. Sau đó ở phía client (javascript) sẽ gọi lên API tăng view riêng, ở API này sẽ check xem user đã từng vào post đó chưa (có session với post_id trong đó không), nếu có thì mới tăng view. Cách này có thể hạn chế được curl, nhưng vẫn không qua nổi trò dùng incognito mode, xoá session :v Có thể hạn chế thêm bằng việc check timestamp sao cho phải cách thời điểm tăng view > 10 giây thì mới cho tăng chẳng hạn, hoặc thay vì lưu trong session thì lưu trong DB và buộc user phải submit chính xác một cái random string lên thì mới cho tăng view.

Nhìn chung thì cái nào cũng có cái hay, cái dở, và có lý do của nó. Nếu em muốn làm thật chặt thì đi theo hướng cuối cùng, verify request của users thật chặt vào.

P/S: Kiểu gì vẫn có thể by pass được thôi, nếu người dùng đã có chủ ý muốn gian lận, và họ có đủ kiến thức IT 😄

P/S 2: Khi đặt câu hỏi em nên thể hiện rõ nội dung mình muốn hỏi ở tiêu đề, để người khác khi nhìn vào có thể biết được em muốn hỏi về vấn đề gì 😄

Chứ để là Một vấn đề cần sự giúp đỡ của mọi người thì đúng là không ai có thể đoán ra được nội dung cả 😂 Những tiêu đề kiểu như "Logic xét tăng lượt view cho bài viết" có vẻ sẽ hay hơn 😄

Chia sẻ
Avatar Jimmy Nguyen @minhtuancnttk39
thg 4 12, 2018 7:55 SA

Dạ... e hiểu rồi ạ.

  • E cám ơn a.
  • Tại e chưa có kinh nghiệm. E sẽ rút kinh nghiệm ạ.
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí