php - 像 Stackoverflow 那样的独特用户投票策略?

标签 php zend-framework spam-prevention voting

我注意到,为了投票,SO 实现了一个 XHR 方法,该方法 POST 到帖子 Controller 并通过 URL 发送帖子 ID 和投票类型,此外还发送一个 fkey 参数,例如:

http://stackoverflow.com/posts/1/vote/2

我将实现类似的技术,我想知道除了实现此技术时的整体逻辑之外,我还可以使用什么逻辑来防止同一用户重复投票并防止垃圾邮件。

我将存储它们的表的架构:

thread_id   user_id   vote_type
2334        1         2

到目前为止,我想出了这些要点:

  • 确保用户已登录
  • 确保发送有效的帖子 ID 和有效的投票类型
  • 确保在发布后,用户之前没有投票过
  • 创建哈希的代码不能包含动态信息(例如用户代理),因为用户可能使用不同的浏览器、不同的操作系统,对吗?

更新:

“SO 可能正在使用登录 cookie 来识别用户。” - 安德鲁

有人可以演示如何完成此操作,或者换句话说,更具体地提供如何生成 fkey(一个字母数字 32 位字符串)的示例吗?

问题:

  • 由于我没有使用 XHR 代码将实际的用户 ID 发送到任何地方,这是否意味着我必须更新我的表架构,以便我可以存储 fkey 而不是 >user_idfkey 对于每个用户来说可能必须是唯一的,因此我可以查询投票表中是否有一行具有任何 fkey。

对于实现类似技术的任何人提供任何提示或见解,我们将不胜感激。

最佳答案

在字段(thread_id、user_id)上创建唯一索引,DBengine 将保护您免受一个线程上的多个评论的影响:)

关于php - 像 Stackoverflow 那样的独特用户投票策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045263/

相关文章:

php - 是否有可能使数据库像克隆一样?

security - 如何防止 IE 表单自动填充填充蜜 jar 字段?

machine-learning - 贝叶斯网络可以在没有垃圾邮件训练集的情况下检测垃圾邮件吗

php - 服务器 :run stuck in other project

php - 是否可以在 PHP 中使用 TCP/IP 套接字访问本地打印机?

php - jQuery:排序分层数据?

php - 如何在 Windows 上安装 Zend 框架

php - cron 作业和 PHP (Zend Framework) 入门

zend-framework - 向soap服务器添加身份验证功能(使用Zend)?

php - 如何检测假用户(爬虫)和 cURL