我正在为一家公司建立一个网站,该公司拥有注册到计算机的软件,并使用计算机的名称和用户名。如何在用户无需填写的情况下检索这些值?
如果有帮助,我正在使用 codeigniter
我正在为一家公司建立一个网站,该公司拥有注册到计算机的软件,并使用计算机的名称和用户名。如何在用户无需填写的情况下检索这些值?
如果有帮助,我正在使用 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;
}