2

私は、コンピューターに登録され、PC のコンピューター名とユーザー名を使用するソフトウェアを持っている会社の Web サイトを構築しています。ユーザーが入力する必要なく、これらの値を取得するにはどうすればよいですか?

それが役立つ場合、私はcodeigniterを使用しています

4

2 に答える 2

10

できません。PHPがユーザーのマシンを認識するのはIPアドレスだけであり、そこから逆引き参照を実行してホスト名を取得できる場合があります。ただし、このホスト名は実際のマシンの名前ではない可能性があります。ユーザーのクライアント側のユーザー名も同様です。Webサイトには、ユーザーがローカルマシンにログインする方法を知っているビジネスはありません。

于 2012-03-01T16:20:05.423 に答える
0

すべてが同じローカル ネットワーク上で発生する場合、サーバー マシンを使用して、訪問者の 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;
}
于 2012-03-01T19:08:07.500 に答える