Получить имя компьютера - PullRequest
2 голосов
/ 01 марта 2012

Я создаю веб-сайт для компании, которая имеет программное обеспечение, которое регистрируется на компьютере, и использует имя компьютера и имя пользователя компьютера. Как я могу получить эти значения без необходимости их заполнения пользователем?

Я использую codeigniter, если это помогает

Ответы [ 2 ]

10 голосов
/ 01 марта 2012

Вы не можете.Все, что PHP когда-либо увидит на компьютере пользователя, - это IP-адрес, с которого вы МОЖЕТЕ сделать обратный поиск и получить имя хоста.Но это имя хоста вряд ли будет фактическим именем машины.То же самое для имени пользователя на стороне клиента.Веб-сайт не знает, как пользователь зашел на свою локальную машину.

0 голосов
/ 01 марта 2012

Если все происходит в одной локальной сети, вы можете использовать серверный компьютер для поиска 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;
}
...