
我一朋友这么想 就是把每个投票的ip放到数据库中然后每天清理一下数据库实现每天只能投一票的功能。但是如何每天清理数据库呢?我觉得不靠谱,但是又想不到有什么其他好办法。
1 hjc4869 2015 年 5 月 9 日 将投票IP 投票时间存入数据库,投票的时候检查在投票当天是否有该IP的投票记录。 |
2 imlonghao 2015 年 5 月 9 日 via Android 您就不能存多一个时间的column么? |
3 liboyue 2015 年 5 月 9 日 via Android 不靠谱,用路由器的不得跪了 |
4 shiny PRO redis 设置过期时间 |
5 giuem 2015 年 5 月 9 日 via Android 移动宽带全省就几个ip。。 |
7 ob 2015 年 5 月 9 日 via Android 加验证码妥妥的 |
8 zeyexe 2015 年 5 月 9 日 设置cookies可能好一点,大部分人应该不知道cookies是什么 |
10 iyaozhen 2015 年 5 月 9 日 via Android 配个定时任务清呗 |
12 billlee 2015 年 5 月 9 日 配个 cron 任务就可以实现每天清理数据库 |
13 leofml 2015 年 5 月 9 日 redis ttl |
14 rtyurtyu 2015 年 5 月 9 日 开一个4G的数组i,i[ip]==1; 到点了就delete []i再开好了 |
16 gdtv 2015 年 5 月 9 日 最靠谱的还是绑定微信,在微信里投票,一个微信号只能投一票 |
17 shootsoft 2015 年 5 月 9 日 强烈建议这种业务用redis处理。 redis的key设置直接用 ip 就行,如果ip存在,就表示存在了。 如果要限制每个IP/每天只能投一次,就每天凌晨用crontab的job清理一次redis。如果要限制每个IP,没24小时只能投放一次,就给redis的key设置一个过期时间为24小时。 |
18 loveyu 2015 年 5 月 9 日 有个问题就是部分地区IP很少,类似移动之类的,很多人直接投不了 |
19 em70 2015 年 5 月 9 日 via Android 首先不能纯IP限制,还要加上cookie,然后cookie值和IP,时间一起存到数据库。每次投票,在数据库查找12小时内的cookie值和IP记录是否与提交的信息有重复的,任一个重复都返回错误。 如果非要在24点限制,就每次投票查找今天0点到现在时间内的IP或者cookie是否重复即可。 不用考虑清空数据库,留下原始数据,还能人工K掉恶意投票。 |
20 jarlyyn 2015 年 5 月 9 日 记录一下每个人最后一次投票时间。 |
21 xiaozhizhu1997 2015 年 5 月 9 日 现在NAT盛行...采用cookies似乎更合适。 |
22 ys0290 2015 年 5 月 9 日 via iPhone cookie过滤一遍,剩下的放服务器过滤 |
25 kslr 2015 年 5 月 9 日 via Android 话说那些自动失效的,加个投票时间戳不就行了 |
26 reeco 2015 年 5 月 9 日 via iPhone 大多数数据库支持事件的,不需要cron |
27 issues 2015 年 5 月 9 日 ip 不行 拨号用户可以重新拨号获取新ip, 当然cookie也不行,本地cookie可以删除。mac地址,当然要想真想搞刷票, mac也貌似也可以伪造。 |
28 issues 2015 年 5 月 9 日 想要真正实现这样的不能刷票是很难的, 只有提升这种刷票的难度。难度大了,自然会放弃。 |
29 luw2007 2015 年 5 月 9 日 每个登录用户只能投一票。 可以使用openauth接入qq,weibo的账户 |
30 wusuopuBUPT 2015 年 5 月 9 日 @shootsoft +1 |
31 zyue 2015 年 5 月 9 日 redis 妥妥的 |
32 gladuo 2015 年 5 月 9 日 面向普通人就cookies~ 程序员投票还是微信吧~ |
33 xiaowangge 2015 年 5 月 9 日 via Android 腾讯CMem 设置过期时间。 |
34 lwch 2015 年 5 月 9 日 redis有条命令叫setex http://cxx.party就是这么实现的。。 |
35 hello2t 2015 年 5 月 10 日 redis存,key value 就好了,定时清理 |
36 zonghua 2015 年 5 月 10 日 via iPhone 实名认证的登录 |
37 flowerwrong 2015 年 5 月 10 日 via Android @gdtv 淘宝分分钟刷哭你。 |
38 flowerwrong 2015 年 5 月 10 日 via Android TTL靠谱,最好配合cookie |
39 Septembers 2015 年 5 月 10 日 via Android @em70 跟QQ OAuth绑到一起会更靠谱一些 一个QQ有效票数只能一次之类的 毕竟大规模注册QQ刷票是比较不现实的 如果基于IP的话去阿里云开1000个最低配的VPS一小时加高匿代理 不就一下刷起来了 |
40 crab 2015 年 5 月 10 日 还是得靠验证码。 另外票数可以不公开,结束后才公开。想刷票的也没调试环境。 |
42 sing1ee 2015 年 5 月 10 日 只考虑问题本身,一圈儿看下来,redis的方案最靠谱儿。 |
44 yaoyuan1072 2015 年 5 月 10 日 via Android 前几天正在研究这个问题,如何获得内网的IP呢?因为有时候一个公司几百号人就一个IP。。。 |
45 gamexg 2015 年 5 月 10 日 |
47 can 2015 年 5 月 10 日 基本就是楼上回复的这些了,微信绑定,IP,cookie,验证码。想防刷票的关键是看你代码怎么写了,写的好的话就能挡得住。建议楼主乌云搜索刷票,我还是想说句来回这点事,关键看你代码怎么写了。 |
51 flynaj 2015 年 5 月 10 日 这样都没用.要防止作弊就是一个用户只能投一次! |
52 flowerwrong 2015 年 5 月 10 日 via Android @flynaj 这样也没用,可以刷单。 |
53 s51431980 2015 年 5 月 10 日 只要在客户端,就有作弊的可能,cookie、验证码最终都敌不过廉价的人力成本 |
55 handleyan 2015 年 5 月 10 日 1、要想识别一台机器的话,可以尝试使用一下cavas,即通过画cavas然后md5来唯一标识一台机器,据说能保证唯一性,我没试过,楼主试过如果有效了可以分享一下 2、在有了唯一标识之后,要想限制一天一次,如果非要用数据库,可以用乐观锁,一条update语句就行了,不过如何暴露地使用数据库在并发比较大情况下是不建议的,除非你准备搞个分布式数据库,这样成功也大了。最好是使用上面很多人提到memcached、reids等分布式内存式的存储工具,这些工具一般也都有乐观锁的实现。 |
58 powergx 2015 年 5 月 10 日 加验证码,要么用第三方账号 世界上有代理服务器,还有肉鸡,刷票是挡不住的 |
59 frankzeng 2015 年 5 月 10 日 用微信关注吧,关注了拿openid去查一下,应该能确保真实 |
60 flowerwrong 2015 年 5 月 11 日 via Android @powergx 我也觉得挡不住,正为微信刷票而烦恼。 |
61 flowerwrong 2015 年 5 月 11 日 via Android @frankzeng nonono,淘宝一下,一堆商家 |
63 jakehu 2015 年 5 月 11 日 我以前做的是写入数据库,每次写入前都清楚一个小时之前的 |
64 FastMem 2015 年 5 月 11 日 数据表 id,ip_address,date 1,123,123,123,123,time 然后每次投票检查日期呗。。 |
67 donghouhe 2015 年 5 月 11 日 看到说用cookie区分的,哎呀,太贴心了,代理都不用挂了!刷票代码写起来太方便了! |
68 millken 2015 年 5 月 11 日 |
69 sun019 2015 年 5 月 11 日 via Android 只有注册用户才能投!!!其他的都是浮云,被投票搞翻过几次服务器的路过! |
70 shepherd 2015 年 5 月 11 日 搞个手机验证码?或者直接用手机投票 |
71 miao1007 2015 年 5 月 11 日 用微信,妥妥的。 |
72 yanze0613 2015 年 5 月 11 日 每天重建一张表,投票的时候记录ip丢进去,第二天换个表 数据库自动方便可以用作业或者shell |
73 66beta 2015 年 5 月 11 日 注册登录吧,不管是自己做,还是接入第三方 |
74 roychan 2015 年 5 月 22 日 如果面对的客户大部分是小白的话,完全可以在 Session 里加一个 waterproof 给个值为1,每次收到请求判断 session 里有没有这个 key。然后 24 小时过期就行了,很节省资源。 |