A-A+

PHP如何获取本机的IP地址

2019年10月17日 PHP技术文章 暂无评论 阅读 0 views 次

PHP获取本机的IP完全可以使用PHP的自带函数,但我的LINUX貌似是被禁止获取IP的,即使本地的也不行,初步判断应该是PHP.INI中禁止使用PHP函数了,好吧,也只能自己写一个function的方法了,主要获取 LINUX操作系统的本机IP地址,因为调试的使用,所以也需要在win2000/xp/win7中进行IP获取的测试,这里就一并写出来了,在测试机也可以进行使用,具体的方法如下:

  1. function getLocalIP() {  
  2.   
  3.  $preg = "/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";  
  4.   
  5. //获取操作系统为win2000/xp、win7的本机IP真实地址  
  6.   
  7.  exec("ipconfig"$out$stats);  
  8.   
  9.  if (!emptyempty($out)) {  
  10.   
  11.   foreach ($out AS $row) {  
  12.   
  13.    if (strstr($row"IP") && strstr($row":") && !strstr($row"IPv6")) {  
  14.   
  15.     $tmpIp = explode(":"$row);  
  16.   
  17.     if (preg_match($preg, trim($tmpIp[1]))) {  
  18.   
  19.      return trim($tmpIp[1]);  
  20.   
  21.     }  
  22.   
  23.    }  
  24.   
  25.   }  
  26.   
  27.  }  
  28.   
  29. //获取操作系统为linux类型的本机IP真实地址  
  30.   
  31.  exec("ifconfig"$out$stats);  
  32.   
  33.  if (!emptyempty($out)) {  
  34.   
  35.   if (isset($out[1]) && strstr($out[1], 'addr:')) {  
  36.   
  37.    $tmpArray = explode(":"$out[1]);  
  38.   
  39.    $tmpIp = explode(" "$tmpArray[1]);  
  40.   
  41.    if (preg_match($preg, trim($tmpIp[0]))) {  
  42.   
  43.     return trim($tmpIp[0]);  
  44.   
  45.    }  
  46.   
  47.   }  
  48.   
  49.  }  
  50. //www.xiariboke.net  
  51.  return '127.0.0.1';  
  52.   
  53. }  

这种方法是不太建议使用的,这是自己测试使用的PHP方法,这里一定要和获取用户IP地址的方法区别开,PHP的函数 $_SERVER['REMOTE_ADDR'] 是获取用户的IP地址,也就是你客户端的IP地址,而上面的方法是获取我主机服务器的IP地址,如果要在服务器上面测试的话,直接使用 $_SERVER['REMOTE_ADDR'] 就OK了,如果我在客户端想要获取 linux 主机端的 IP,就只能使用上面的 function 方法了,这里一定要做个区分。

标签:

给我留言