现在需要做一个投票的功能,但是遇到了一个问题,同一个公司的对外的IP地址是相同的,这样就会导致我投票过后,本公司的其它人无法投票了。
我使用获取IP的方法是request.getRemoteAddr();请问有什么办法可以让本公司的每台机子都可以投票,但是每个用户只能投一次票呢?

解决方案 »

  1.   

    在表中加入一个字段吧,投了就设置一个值,以后如果再投的话用ajax查询一下,如果已经投了就用js把投票按钮设置不可点击,这样只查一下就行了。
      

  2.   

    二楼的那个方法应该是不可用的,浏览器刷新一下又恢复初始态了。
    至于4楼的方法,写一个程序确实能通过IP查MAC地址,但是一个公司返回IP地址相同的话也只是会返回一个MAC而已。
    如果是公司只是通过内网投票的话,4楼的方法可以试一下,
    要不这问题是无解的。
      

  3.   

    不记名投票的话,一般用cookie标记客户端是否已经透过票了,但不能防止作弊。
      

  4.   

    可以的,你如果刷新了,从数据库里读出来的状态就是已经投票过的了,就可以用jsp标签判断一下就行 
      

  5.   

    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();
    }
      

  6.   

    你们都是在同一个局域网,当然是同一个ip啊, 除非用代理IP去模拟访问你的投票系统
      

  7.   

    也不是不可能,对面局域网有台服务器给你做中转就可以,在对面服务器获取相对MAC当参数转接到你自己的服务器上做唯一标识。 IP是不靠谱的,动态IP,路由重启一下IP就变了。也可以桥接对面路由器,也可以直接获取相应MAC。
    不用那么精确地做法:写cookie 作弊几率较高。比较精确地办法: 做个程序,投票的时候自动往对面的机子上的一个路径写个文件。你懂得~  不易发现的