Một vấn đề cần sự giúp đỡ của mọi người.
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
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ùngtimestamp
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 đượccurl
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ùngtimestamp
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ớipost_id
trong đó không), nếu có thì mới tăng view. Cách này có thể hạn chế đượccurl
, 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 checktimestamp
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
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 ạ.