Domanda

Sto costruendo un sito Web per un'azienda che ha un software che viene registrato sul computer e utilizza il nome del computer e il nome utente del PC.Come posso recuperare tali valori senza che l'utente ha bisogno di riempirlo?

Sto usando Coderigniter se questo aiuta

È stato utile?

Soluzione

You can't. All PHP will ever see of the user's machine is the IP address, from which you MAY be able to do a reverse lookup and get a hostname. But this hostname is not likely to be the actual machine's name. Ditto for the user's client-side username. A website has no business knowing how a user logged into their local machine.

Altri suggerimenti

If everything happens on the same local network, you could use the server machine to lookup the mac address corresponding to the IP of the visitor with something like that:

/**
 * 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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top