使用PHP会话限制投票计数器?

使用PHP会话限制投票计数器?,php,session,counter,Php,Session,Counter,我正试图从我的数据库中获取一个产品投票计数器的限制器。到目前为止,投票计数器是无止境的,使得对一个产品进行多次投票成为可能。这些站点具有登录功能,因此也具有会话 我所想的是某种计数器,它锁定了每个用户对某个产品进行不止一次投票的能力,并且只留下了以另一种方式投票的机会(如果投票结果是向上的,则投反对票,反之亦然)。假设您的数据库中有3个表: Product(Id, Name, ...) User(Id, Name, EMail, Password) Vote(Id, ProductId, Use

我正试图从我的数据库中获取一个产品投票计数器的限制器。到目前为止,投票计数器是无止境的,使得对一个产品进行多次投票成为可能。这些站点具有登录功能,因此也具有会话


我所想的是某种计数器,它锁定了每个用户对某个产品进行不止一次投票的能力,并且只留下了以另一种方式投票的机会(如果投票结果是向上的,则投反对票,反之亦然)。

假设您的数据库中有3个表:

Product(Id, Name, ...)
User(Id, Name, EMail, Password)
Vote(Id, ProductId, UserId, Type) // Where Type is Upvote/Downvote/Whatever
当用户投票时,您只需在
投票
表中输入一个条目,然后设置ProductId、UserId,当然还有投票的类型。这样,您就可以随时检查用户是否已经对产品进行了投票


您甚至可以对
投票表上的
(ProductId,UserID)
进行唯一约束。

假设您的数据库中有3个表:

Product(Id, Name, ...)
User(Id, Name, EMail, Password)
Vote(Id, ProductId, UserId, Type) // Where Type is Upvote/Downvote/Whatever
当用户投票时,您只需在
投票
表中输入一个条目,然后设置ProductId、UserId,当然还有投票的类型。这样,您就可以随时检查用户是否已经对产品进行了投票


您甚至可以在
投票表上为
(ProductId,UserID)
设置一个唯一的约束。

谢谢您的回答!这个解决方案确实在我之前就想到了,而且如果sessions不能完成这项工作,我也会选择这个解决方案。只是我很好奇,想看看我是否已经脱离了联盟,thiking sessions可以做这样的事情……事实上,你可以使用sessions,但请注意,sessions绑定到客户端的cookie上。用户可以轻松删除cookie广告,使您丢失有关会话的所有数据。在没有任何授权的情况下,您无法确保用户只投票一次。是的,您完全正确。没有想到这一点,最终可能会成为一个问题。我要用前面的解决方案。谢谢你的回答,哈夫丹!这个解决方案确实在我之前就想到了,而且如果sessions不能完成这项工作,我也会选择这个解决方案。只是我很好奇,想看看我是否已经脱离了联盟,thiking sessions可以做这样的事情……事实上,你可以使用sessions,但请注意,sessions绑定到客户端的cookie上。用户可以轻松删除cookie广告,使您丢失有关会话的所有数据。在没有任何授权的情况下,您无法确保用户只投票一次。是的,您完全正确。没有想到这一点,最终可能会成为一个问题。我会用之前的解决方案。