Получить имя компьютера
Я создаю веб-сайт для компании, которая имеет программное обеспечение, которое регистрируется на компьютере, и использует имя компьютера и имя пользователя компьютера. Как я могу получить эти значения без необходимости их заполнения пользователем?
Я использую codeigniter, если это помогает
2 ответа
Ты не можешь Все, что PHP когда-либо увидит на компьютере пользователя, - это IP-адрес, с которого вы МОЖЕТЕ сделать обратный поиск и получить имя хоста. Но это имя хоста вряд ли будет фактическим именем машины. То же самое для имени пользователя на стороне клиента. Веб-сайт не имеет никакого дела, зная, как пользователь зашел на свой локальный компьютер.
Если все происходит в одной и той же локальной сети, вы можете использовать серверный компьютер для поиска MAC-адреса, соответствующего IP-адресу посетителя, с помощью чего-то подобного:
/**
* 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;
}