投票【用户IP限制】

coooliang 2013-08-29 11:37:48
现在需要做一个投票的功能,但是遇到了一个问题,同一个公司的对外的IP地址是相同的,这样就会导致我投票过后,本公司的其它人无法投票了。
我使用获取IP的方法是request.getRemoteAddr();

请问有什么办法可以让本公司的每台机子都可以投票,但是每个用户只能投一次票呢?
...全文
505 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
马可菠萝me 2015-09-10
  • 打赏
  • 举报
回复
同样蛋疼的问题,限制无限发验证码,结果领导用不了,好几天做出的功能直接废掉。领导一句话;我用不了了,就是牛
coooliang 2013-10-09
  • 打赏
  • 举报
回复
最后的办法是都让他投,然后按IP自己分析数据。
coooliang 2013-09-04
  • 打赏
  • 举报
回复
蛋疼。。。。
snow-is-my-Love 2013-09-03
  • 打赏
  • 举报
回复
也不是不可能,对面局域网有台服务器给你做中转就可以,在对面服务器获取相对MAC当参数转接到你自己的服务器上做唯一标识。 IP是不靠谱的,动态IP,路由重启一下IP就变了。 也可以桥接对面路由器,也可以直接获取相应MAC。 不用那么精确地做法:写cookie 作弊几率较高。 比较精确地办法: 做个程序,投票的时候自动往对面的机子上的一个路径写个文件。你懂得~ 不易发现的
唐门小师兄 2013-09-03
  • 打赏
  • 举报
回复
哥们,用缓存控制吧,其他的都很蛋疼
polite_sun 2013-09-02
  • 打赏
  • 举报
回复
你们都是在同一个局域网,当然是同一个ip啊, 除非用代理IP去模拟访问你的投票系统
coooliang 2013-09-01
  • 打赏
  • 举报
回复
引用 13 楼 xinlan1022 的回复:
String ip = request.getHeader("x-forwarded-for"); if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); }
这个我试过了,同一个公司是显示一样的IP的。
coooliang 2013-08-30
  • 打赏
  • 举报
回复
有人做过类似的需求吗??
coooliang 2013-08-30
  • 打赏
  • 举报
回复
我感觉这个问题,无解。除非开发一个浏览器端的组件。
xinlan1022 2013-08-30
  • 打赏
  • 举报
回复
String ip = request.getHeader("x-forwarded-for"); if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (null == ip || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); }
浪里花 2013-08-29
  • 打赏
  • 举报
回复
在表中加入一个字段吧,投了就设置一个值,以后如果再投的话用ajax查询一下,如果已经投了就用js把投票按钮设置不可点击,这样只查一下就行了。
浪里花 2013-08-29
  • 打赏
  • 举报
回复
引用 5 楼 AA5279AA 的回复:
二楼的那个方法应该是不可用的,浏览器刷新一下又恢复初始态了。 至于4楼的方法,写一个程序确实能通过IP查MAC地址,但是一个公司返回IP地址相同的话也只是会返回一个MAC而已。 如果是公司只是通过内网投票的话,4楼的方法可以试一下, 要不这问题是无解的。
可以的,你如果刷新了,从数据库里读出来的状态就是已经投票过的了,就可以用jsp标签判断一下就行
我的波塞冬 2013-08-29
  • 打赏
  • 举报
回复
记录用户id
灰蛋一个 2013-08-29
  • 打赏
  • 举报
回复
在客户端做标记!可以尝试一下!
比特灵 2013-08-29
  • 打赏
  • 举报
回复
不记名投票的话,一般用cookie标记客户端是否已经透过票了,但不能防止作弊。
失落夏天 2013-08-29
  • 打赏
  • 举报
回复
二楼的那个方法应该是不可用的,浏览器刷新一下又恢复初始态了。 至于4楼的方法,写一个程序确实能通过IP查MAC地址,但是一个公司返回IP地址相同的话也只是会返回一个MAC而已。 如果是公司只是通过内网投票的话,4楼的方法可以试一下, 要不这问题是无解的。
齐岳 2013-08-29
  • 打赏
  • 举报
回复
IP一样了,那就查MAC地址吧
小丑哥_V5 2013-08-29
  • 打赏
  • 举报
回复
看你怎么设计,看是从数据库账号上控制,还是从当前ip上控制,如果访问不大的话,可以用数据库设计,然后每天12点后就清空投票的标识

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧