,我将使用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;
}