php投票限制,如何规定一天内不能投票超过5次

YIPU 发布于 2012/07/25 14:01
阅读 3K+
收藏 0
PHP
php投票限制,如何规定一天内不能投票超过5次,只有注册会员才能投票
加载中
0
Andre.Z
Andre.Z
这玩意除了弄个投票历史,我还真想不出啥了。历史记录太多,保留个两天的数据也就差不多了。
0
回去干活
回去干活

if(今天你投票大于5了){

 不让你投票!

 返回主页!

}

 

这就是解决办法.

YIPU
YIPU
memcache,没用过,不太明白,我这里好像不需要判断ip啊,根据用户名来投票的
回去干活
回去干活
哈哈. 存memcache,投一次+1就可以了,每次投+1,大于5就return false; 用户的的话,k/v的方式,user=>vote_count IP的话,k/v的方式ip=>vote_count
YIPU
YIPU
=没说
0
酒逍遥
酒逍遥

建个表记录 投票的历史记录

id    user_id    time

然后 count  用户今天投票的次数是否大于5

select count(*) from table where user_id=xx and time>xx and time<xx

这个表的记录可以只保留2天以内的..

 

YIPU
YIPU
回复 @酒逍遥 : 谢谢
酒逍遥
酒逍遥
回复 @YIPU : 是的
YIPU
YIPU
回复 @酒逍遥 : time<当前时间-86400*2,这里的当前时间用time()获取?
酒逍遥
酒逍遥
回复 @YIPU :如果投票记录很少..将不触发删除操作..不过此时表里的记录也不会很多..不删除也无所谓了.. 而且可以视投票的情况来设置概率.. 例如 投票的操作很多 百万级每天..那么概率可以设置为 万分之一..
酒逍遥
酒逍遥
回复 @YIPU : 这也简单啊..可以学习php的垃圾回收机制啊 当有人投票时,也就是你往这个表插入投票记录的时候。设置一个随机概率例如rand(1,100)==1 百分之一的概率执行delete操作 删除表中 time<当前时间-86400*2 的记录 这样 当有很多投票记录的时候就会自动删除多余的记录了..
下一页
返回顶部
顶部