22 09 2015
  1. <?
  2. //php获取ip的算法
  3. if(getenv('HTTP_CLIENT_IP')) {
  4. $onlineip = getenv('HTTP_CLIENT_IP');
  5. } elseif(getenv('HTTP_X_FORWARDED_FOR')) {
  6. $onlineip = getenv('HTTP_X_FORWARDED_FOR');
  7. } elseif(getenv('REMOTE_ADDR')) {
  8. $onlineip = getenv('REMOTE_ADDR');
  9. } else {
  10. $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  11. }
  12. exec ("ping $onlineip");
  13. $macaddress=exec ("arp -a | find /i".' "'.$onlineip.'"');
  14. $computername=exec ('nbtstat -A'.' '.$onlineip.' | find /i "20"');
  15. $MacName=(preg_split("/\s+/", trim($macaddress)));
  16. $UserName=(preg_split("/\s+/", trim($computername)));
  17. echo "计算机名:".$UserName[0]." --- "."IP 地址:".$MacName[0]." --- "."MAC 地址:".$MacName[1];
  18. ?>

  19. class GetMacAddr
  20. {
  21. var $return_array = array(); // 返回带有MAC地址的字串数组
  22. var $mac_addr=array();

  23. function GetMacAddr()
  24. {
  25. switch (strtolower(PHP_OS) )
  26. {
  27. case "linux":$this->forLinux();break;
  28. case "solaris":break;
  29. case "unix":break;
  30. case "aix":break;
  31. default:$this->forWindows();break;
  32. }


  33. $temp_array = array();
  34. foreach ( $this->return_array as $value )
  35. {
  36. 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 ) )
  37. {
  38. $this->mac_addr[] = $temp_array[0];
  39. }
  40. }
  41. unset($temp_array);
  42. return $this->mac_addr;
  43. }

  44. function forWindows()
  45. {
  46. @exec("ipconfig /all", $this->return_array);
  47. if ( $this->return_array )
  48. return $this->return_array;
  49. else{
  50. $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
  51. if ( is_file($ipconfig) )
  52. @exec($ipconfig." /all", $this->return_array);
  53. else
  54. @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array);
  55. return $this->return_array;
  56. }
  57. }

  58. function forLinux()
  59. {
  60. @exec("ifconfig -a", $this->return_array);
  61. return $this->return_array;
  62. }
  63. }

  64. $mac = new GetMacAddr();
  65. echo "<pre>";
  66. print_r( $mac->mac_addr);

?>

 

获取客户端MAC(经过测试 无效 除非在同一个网关内)

 

  1. function GetClientMac() {
  2. $return_array = array();
  3. $temp_array = array();
  4. $mac_addr = "";
  5. @exec("arp -a",$return_array);
  6. foreach($return_array as $value) {
  7. if(strPos($value,$_SERVER["REMOTE_ADDR"]) !== false && preg_match("/(:?[0-9a-f]{2}[:-]){5}[0-9a-f]{2}/i",$value,$temp_array)) {
  8. $mac_addr = $temp_array[0];
  9. break;
  10. }
  11. }
  12. return ($mac_addr); 


原文引用:http://blog.sina.com.cn/s/blog_6f78e9030100wxwr.html

发表评论