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

WBOY
發布: 2016-06-23 13:47:36
原創
969 人瀏覽過

经过各种百度,各种搜索,得出的结论是,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就算嵌入成功了作用也不大~

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

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板