投票系统,如何防止单机多投现象???请大家帮忙,急~~~ 投票系统,如何防止单机多投现象(也就是一台电脑只能投一次)???请大家帮忙,急~~~谢谢... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 记录ip或者mac地址是一种选择,如果该ip或者mac地址被投过了,就不记录了不过动态ip和手工该mac地址的办法就不好控制了 我指的是一台电脑只能投一次.如果记录已投过了的电脑的IP,这样不好,有可能用的是代理IP,比如一所学校,那么多台电脑,只对外一个IP. 用IP不大可能,我上面也提到了.最好能用MAC,问题是如何得到客户端的MAC地址??? 有两种一种是客户端做标志,比如用COOKIE一种是服务端做标志,比如记IP等但这两种都是防君子不防小人的做法想要更改是很容易的 其实从理论上来说,你想要做的就是标志对方电脑的唯一性如果是软件的话,估计还好做但如果是WEB的话,我想不出什么好办法,WEB权限的控制还是蛮严的 http://blog.csdn.net/telesonico/archive/2007/08/04/1726520.aspx用js看看吧,投票的时候传递进去 记录机器的mac地址记录到数据库中然后根据mac判断是否已经投票,我以前写过一个代码给你参考获取mac地址Java本身没有这个能力,不过利用操作系统的命令可以做到。public static String getMACAddress() {String address = "";String os = System.getProperty("os.name");if ( os != null && os.startsWith("Windows")) {try { String command = "cmd.exe /c ipconfig /all"; Process p = Runtime.getRuntime().exec(command); BufferedReader br = new BufferedReader( new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { if (line.indexOf("Physical Address") > 0) { int index = line.indexOf(":"); index += 2; address = line.substring(index); break;}} br.close(); return address.trim();}catch (IOException e) { }}return address;} 你这个是得到服务器端的MAC还是得到客户端的MAC??? 11楼,lsj19830812 大哥:我有试过那里面的代码,但JS执行有问题(错误:对象不支持此属性或方法) 用IP的话,不太好。因为大家可能使用同一个网关的。用用户名+IP的方式。先看用户名,只能投票一次。对于Guest,只能用IP了。想得到MAC地址,很难。需要用户端的安全系数很低。这个基本上不可能。或者控件,等等。用cookie是一个方式,但是未必所有的都支持cookie,就算支持,很多人都会用完就清空的。To ProvidenceZY:你得到服务期的MAC干什么呢? 支持通过getMACAddress这个方法比较好。 别傻啦!getMACAddress方法只能在服务器端运行,得到是服务器的MAC地址,怎能得到客户端的MAC地址呢? 如果通过MAC地址的方式可能有局限行。比如网吧的机器可能被很多人使用。但是记录mac地址就唯一了,可以通过IP地址,但是不可以重复投票,必须过一定时间在投票。我以前就是这样作的。 lsj19830812 李逵 等 级: 发表于:2007-10-23 13:46:5811楼 得分:0 http://blog.csdn.net/telesonico/archive/2007/08/04/1726520.aspx 用js看看吧,投票的时候传递进去 这位兄弟的方法可以使用, 只是要求客户端对ActiveX控件做允许操作就可以,再加上 lcy_IT 的了定时间后就可以再投的思想, 就很不错了, 嗯 跟我想的一样可以做一ActiveX控件,获取客户端MAC地址或者CPU的标识什么的。但是做完控件可能新的问题就来了,客户端 默认IE设置无法下载,我以前是做一数字签名。 总结一下:1、记录IP。缺点上面已经讨论的很清楚了,我就不说了。2、用cookie。可能浏览器不支持cookie或者关闭cookie。3、用ActiveX控件,可以获得MAC,也可以用别的技术,但ActiveX一样可以被浏览器禁止,而且只能在windows平台。4、用Applet。类似ActiveX控件的情况。况且需要JRE支持,速度慢,优点是兼容多平台的不同浏览器。5、用硬件(如USBKEY)+ActiveX控件方式,可以有效防止软件模拟的问题,但成本太高了,而且也有平台问题。6、还没想出来结论:差不多得了。不同的方案,是要付出不同的代价的。 jsp 简单textarea小问题 求教 Eclipse项目中引入外部JAR包,build时出错 提示的内容都是找不到外部JAR包的类 请问做网站开发的人,一定要同时会前端和后端么? jsp设计思路求救 tomcat网站的小问题,有关线程池 连接上了数据库就是不执行 如何制作登陆权限 ******谁能给我讲讲Apache和Tomcat的关系? 大家进来讨论一下!!关于正式场合下使用的JDBC? tomcat Java代码能创建数据库吗?
一种是客户端做标志,比如用COOKIE一种是服务端做标志,比如记IP等但这两种都是防君子不防小人的做法
想要更改是很容易的
但如果是WEB的话,我想不出什么好办法,WEB权限的控制还是蛮严的
获取mac地址Java本身没有这个能力,不过利用操作系统的命令可以做到。public static String getMACAddress() {
String address = "";
String os = System.getProperty("os.name");
if ( os != null && os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br =
new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
}
catch (IOException e) { }
}
return address;
}
我有试过那里面的代码,但JS执行有问题(错误:对象不支持此属性或方法)
用用户名+IP的方式。
先看用户名,只能投票一次。
对于Guest,只能用IP了。想得到MAC地址,很难。需要用户端的安全系数很低。这个基本上不可能。或者控件,等等。
用cookie是一个方式,但是未必所有的都支持cookie,就算支持,很多人都会用完就清空的。To ProvidenceZY:
你得到服务期的MAC干什么呢?
李逵
等 级:
发表于:2007-10-23 13:46:5811楼 得分:0
http://blog.csdn.net/telesonico/archive/2007/08/04/1726520.aspx 用js看看吧,投票的时候传递进去
这位兄弟的方法可以使用, 只是要求客户端对ActiveX控件做允许操作就可以,再加上 lcy_IT 的了定时间后就可以再投的思想,
就很不错了,
可以做一ActiveX控件,获取客户端MAC地址或者CPU的标识什么的。
但是做完控件可能新的问题就来了,客户端 默认IE设置无法下载,我以前是做一数字签名。
1、记录IP。缺点上面已经讨论的很清楚了,我就不说了。
2、用cookie。可能浏览器不支持cookie或者关闭cookie。
3、用ActiveX控件,可以获得MAC,也可以用别的技术,但ActiveX一样可以被浏览器禁止,而且只能在windows平台。
4、用Applet。类似ActiveX控件的情况。况且需要JRE支持,速度慢,优点是兼容多平台的不同浏览器。
5、用硬件(如USBKEY)+ActiveX控件方式,可以有效防止软件模拟的问题,但成本太高了,而且也有平台问题。
6、还没想出来
结论:
差不多得了。不同的方案,是要付出不同的代价的。