检索计算机名称

时间:2012-03-01 16:16:18

标签: php codeigniter computer-name

我正在为一家公司建立一个网站,该公司拥有一台注册到计算机的软件,并使用该计算机的名称和用户名。如何在用户无需填写的情况下检索这些值?

我正在使用codeigniter,如果这有助于任何

2 个答案:

答案 0 :(得分:10)

你做不到。所有PHP都会看到用户的机器是IP地址,您可以从中进行反向查找并获取主机名。但是这个主机名可能不是实际机器的名称。同上用户的客户端用户名。网站无法了解用户如何登录本地计算机。

答案 1 :(得分:0)

如果一切都发生在同一个本地网络上,您可以使用服务器机器查找与访问者IP相对应的mac地址:

/**
 * Returns MAC-address (Ethernet 2-level in OSI model address)
 * @param string $ip Address to search MAC for. If not set, IP-address from constructor'll be used
 * @return mixed
 */
public function getMAC($ip=null)
{
    if((!$ip && !$this->sCurrentIP) || !$this->_arp_allowed())
    {
        return null;
    }
    $ip=$ip?$ip:$this->sCurrentIP;
    $rgMatches=array();
    if(PHP_OS=='WINNT')
    {
       exec("arp -a", $rgResult);
       $sMacTemplate="/[\d|A-F]{2}\-[\d|A-F]{2}\-[\d|A-F]{2}\-[\d|A-F]{2}\-[\d|A-F]{2}\-[\d|A-F]{2}/i";
       foreach($rgResult as $key=>$value)
       {
          if (strpos($value, $ip)!==FALSE)
          {
             preg_match($sMacTemplate, $value, $rgMatches);
             break;
          }
       };
    }
    else
    {
       exec("arp -a | grep $ip", $rgResult);
       if(count($rgResult))
       {
           $sMacTemplate="/[\d|A-F]{2}\:[\d|A-F]{2}\:[\d|A-F]{2}\:[\d|A-F]{2}\:[\d|A-F]{2}\:[\d|A-F]{2}/i";
           preg_match($sMacTemplate, $rgResult[0], $rgMatches);
       }
    }
    return count($rgMatches)?$rgMatches[0]:null;
}