سؤال

أنا أبني موقع ويب لشركة لديها برنامج يتم تسجيله في الكمبيوتر، ويستخدم اسم الكمبيوتر واسم المستخدم للكمبيوتر.كيف يمكنني استرجاع تلك القيم دون أن يحتاج المستخدم إلى ملء ذلك؟

أنا أستخدم codeigniter إذا كان ذلك يساعد على أي

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top