检索计算机名称



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

如果这有助于任何

,我将使用codeigniter

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

如果所有事情都发生在同一个本地网络上,您可以使用服务器机器查找访问者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;
}

最新更新