Home  >  Article  >  Backend Development  >  php获取客户端MAC和IP地址 js代码嵌入失败

php获取客户端MAC和IP地址 js代码嵌入失败

WBOY
WBOYOriginal
2016-06-23 13:47:36928browse

经过各种百度,各种搜索,得出的结论是,php代码只能获得服务器mac,无法获取客户端mac,ip地址也只能获取客户端外网ip,不能获得内网实际ip(192.168.1.***)

于是转向用js的方法,照搬网上搜来的程序,貌似大家都用的下面的方法,但存在两个致命问题。

1、生成html文件可以直接运行获得mac和ip地址,但只能在ie浏览器下,并且需要获得用户许可运行activex控件,谷歌、firefox、safari根本就无法响应。

2、将里面的js代码嵌入php就不行了,本地localhost测试总是报错(无法识别,***为空等),上传到服务器上当然也不行了。

很头疼,第一个问题估计无法解决,第二个问题可能是我自己的原因,有没有在php页面用localhost调试成功的?


    WMI Scripting HTML
    

    <script></script>         for="foo">
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
    

    <script> <br /> if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true) <br /> { <br /> if(objObject.MACAddress != null && objObject.MACAddress != "undefined") <br /> MACAddr = objObject.MACAddress; <br /> if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined") <br /> IPAddr = objObject.IPAddress(0); <br /> if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined") <br /> sDNSName = objObject.DNSHostName; <br /> } <br /> </script>

    


    
    

    
    


    <script> <br /> var service = locator.ConnectServer(); <br /> var MACAddr ; <br /> var IPAddr ; <br /> var DomainAddr; <br /> var sDNSName; <br /> service.Security_.ImpersonationLevel=3; <br /> service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); <br /> </script>

    

        
        
        
    





回复讨论(解决方案)


 
    /** 
    获取网卡的MAC地址原码;目前支持WIN/LINUX系统 
    获取机器网卡的物理(MAC)地址 
    **/ 
       
    class GetMacAddr{ 
       
            var $return_array = array(); // 返回带有MAC地址的字串数组 
            var $mac_addr; 
       
            function GetMacAddr($os_type){ 
                 switch ( strtolower($os_type) ){ 
                          case "linux": 
                                    $this->forLinux(); 
                                    break; 
                          case "solaris": 
                                    break; 
                          case "unix": 
                                     break; 
                           case "aix": 
                                     break; 
                           default: 
                                     $this->forWindows();
                                     break; 
        
                  } 
        
                   
                  $temp_array = array(); 
                  foreach ( $this->return_array as $value ){ 
        
                            if ( 
    preg_match("/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i",$value, 
    $temp_array ) ){ 
                                     $this->mac_addr = $temp_array[0]; 
                                     break; 
                           } 
        
                  } 
                  unset($temp_array); 
                  return $this->mac_addr; 
             } 
        
        
             function forWindows(){ 
                  @exec("ipconfig /all", $this->return_array); 
                  if ( $this->return_array ) 
                           return $this->return_array; 
                  else{ 
                           $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe"; 
                           if ( is_file($ipconfig) ) 
                              @exec($ipconfig." /all", $this->return_array); 
                           else 
                              @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array); 
                           return $this->return_array; 
                  } 
             } 
        
        
        
             function forLinux(){ 
                  exec("/sbin/ifconfig", $this->return_array,$r); 
        //echo "1234567";
        //  print_r($this->return_array);
          echo "
";
                  return $this->return_array; 
             } 
        
    } 
    //方法使用 
    $mac = new GetMacAddr(PHP_OS); 
    echo $mac->mac_addr; 

    $macc=$mac->mac_addr; //MAC的传值
    echo PHP_OS;
    //echo "1111";
    echo $macc;//传值后的显示

 

 

?>
 

错了不好意思

死心吧这个

死了心吧, 楼主百度谷歌了半天,就是为了搞懂php和js在哪里跑。

死了心吧, 楼主百度谷歌了半天,就是为了搞懂php和js在哪里跑。



js是能实现的,但存在我上面说的两个问题,那想获得客户端内网ip和mac地址是不可能了?求指点,求确认。。。

死心吧这个



就没有方法实现这个功能了吗?没有可能的话,我就结贴了,想别的办法去~

引用 3 楼  的回复:
死心吧这个


就没有方法实现这个功能了吗?没有可能的话,我就结贴了,想别的办法去~



立刻结帖.
写浏览器插件 写桌面CS程序 

php只运行在服务器端。是无法获取客户端的东西的

php只运行在服务器端。是无法获取客户端的东西的


恩,这个我知道,php直接获取的方式我已经放弃了,现在是想用js的方式,我的前端页面也是后缀为.php的,理论上js嵌入前端是可以执行的,但我这边js嵌入也不成~

引用 6 楼 的回复:

引用 3 楼 的回复:
死心吧这个


就没有方法实现这个功能了吗?没有可能的话,我就结贴了,想别的办法去~


立刻结帖.
写浏览器插件 写桌面CS程序



好吧,看来是没有别的自然方法了,插件什么的就用不上了;js就算嵌入成功了作用也不大~

我分不多,菜鸟一只,第一次发帖交流,平均一下都给了~

楼主找到解决办法了吗?????求解答啊!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn