2

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

如果有帮助,我正在使用 codeigniter

4

2 回答 2

10

你不能。PHP 将看到的用户机器的所有内容都是 IP 地址,您可以从中进行反向查找并获取主机名。但是这个主机名不太可能是实际机器的名称。用户的客户端用户名同上。网站不知道用户如何登录到他们的本地机器。

于 2012-03-01T16:20:05.423 回答
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;
}
于 2012-03-01T19:08:07.500 回答