我会稍微修改一下您的设计,这样您就可以利用数据,并防止可能破坏统计数据的逻辑错误。
首先,我将上下投票存储为两个独立的元值。原因是,如果愿意,您可以同时显示这两个选项,也可以计算投票数占总投票数的百分比。例如,45人赞成,10人反对,81%的人赞成这个问题,55人投票。然后,您可以向用户显示这些统计信息。你现在的做法只能显示出净的正收益,而这并没有给实际的受欢迎程度提供背景,即+3并没有那么有用。
逻辑错误预防:如果您的代码为+1或-1,并且您的代码具有错误的逻辑,那么您的所有投票都可能是错误的。简单地按照用户的意图存储投票,然后使用检索/读取技术来执行逻辑,这样更容易。i、 e为了保持数据完整性,您永远不想编写破坏性逻辑。修复读取错误45up/55total比通过一组写入修改“投票”更容易。我的观点是,如何修复已覆盖的数据。
cookie有助于防止会话中出现多个请求,但跟踪使用或不使用cookie的用户的最佳方法是使用ajax,在他们尝试对问题查找进行投票后,用户会对当前问题进行投票(假设未设置cookie或cookie已过期)。通过这样做,您还可以允许他们更改投票。这意味着你需要做两件事中的一件,我认为这两件事可能很容易:
有一个记录用户投票方式的记录表,跟踪其用户名/用户id、问题编号和投票。这在纯mysql系统中是一种标准的非wordpress方式,但在这里也可能对您有意义。另一个选项可能是序列化用户对所有回答的问题的投票,并存储为一个对象。现在,由于您的信息是关于您的系统的简短信息,因此很难给出最佳答案;是使用另一个表还是序列化元表中的元字段。这应该会给你一些想法。