请高手进来。一个能实现但有点难的问题!
我想做一个投票的系统。用ASP写的。当然。PHP也行。现在就是考虑到没有电脑的朋友只能通过网吧去投票,网吧的IP不会变,但全网吧只用公网的一个IP。同时,有电脑的朋友一般也都用的是拔号上网,每一次上网都会换IP,所以用IP限制不理想。看到网站很多文章能获取到客户端网卡的MAC地址。不知如何实现,请高手指点!以下是从网站找到的相关代码,但这只能获取服务器的MAC地址。请指点。敬谢!<?php
/**
获取机器网卡的物理(MAC)地址 
wwa $Exp 
**/
class GetMacAddr
{
var $return_array = array(); // 返回带有MAC地址的字串数组
var $mac_addr;function GetMacAddr($os_type)
{
switch ( strtolower($os_type) )
{
case "linux":
$this->forLinux();
break;
case "solaris":
break;
case "unix":
break;
case "aix":
break;
default:
$this->forWindows();
break;
}$temp_array = array();
foreach ( $this->return_array as $value )
{
if ( preg_match( "/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i", $value, $temp_array ) )
{
$this->mac_addr = $temp_array[0];
break;
}
}
unset($temp_array);
return $this->mac_addr;
}function forWindows()
{
@exec("ipconfig /all", $this->return_array);
if ( $this->return_array )
return $this->return_array;
else{
$ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
if ( is_file($ipconfig) )
@exec($ipconfig." /all", $this->return_array);
else
@exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array);
return $this->return_array;
}
}function forLinux()
{
@exec("ifconfig -a", $this->return_array);
return $this->return_array;
}
}
?>
<?
//$mac = new GetMacAddr(PHP_OS);
//echo $mac->mac_addr;
?>

解决方案 »

  1.   

    这是一个世界性的难题,期待高手到来即使得到了mac地址又能怎样?人家换网卡继续投票,买了1000块网卡,嘿嘿
    网上投票就别期待准确性,大体就行了,别太认真
      

  2.   

    下cookie + IP 记录 或者时间差等等尝试一下咯!
      

  3.   

    做到100%正确的投票是不可能的,真要有人作bi的话(目的性特别强,如 超女 投票是不可能用这种方式的),那是没得防的,网上的调查不够真实,公益调查还可以。另外,php也是不能获得网卡地址的。