PHP获取客户端IP的几种方法

PHP获取客户端IP有几个函数,下面介绍下三种常用的写法。

第一种:

<?php
function GetIP() { //获取IP 
    if ($_SERVER["HTTP_X_FORWARDED_FOR"]) 
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
    else if ($_SERVER["HTTP_CLIENT_IP"])
        $ip = $_SERVER["HTTP_CLIENT_IP"]; 
    else if ($_SERVER["REMOTE_ADDR"]) 
        $ip = $_SERVER["REMOTE_ADDR"]; 
    else if (getenv("HTTP_X_FORWARDED_FOR")) 
        $ip = getenv("HTTP_X_FORWARDED_FOR"); 
    else if (getenv("HTTP_CLIENT_IP")) 
        $ip = getenv("HTTP_CLIENT_IP"); 
    else if (getenv("REMOTE_ADDR")) 
        $ip = getenv("REMOTE_ADDR"); 
    else 
        $ip = "Unknown"; 
    return $ip; 
} 
?>

第二种:

function getip() {
 if (isset($_SERVER)) {
  if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) {
   $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
  } elseif (isset($_SERVER[HTTP_CLIENT_IP])) {
   $realip = $_SERVER[HTTP_CLIENT_IP];
  } else {
   $realip = $_SERVER[REMOTE_ADDR];
  }
 } else {
  if (getenv("HTTP_X_FORWARDED_FOR")) {
   $realip = getenv( "HTTP_X_FORWARDED_FOR");
  } elseif (getenv("HTTP_CLIENT_IP")) {
   $realip = getenv("HTTP_CLIENT_IP");
  } else {
   $realip = getenv("REMOTE_ADDR");
  }
 }
 $iphide=explode(".",$realip);
 $realip="$iphide[0].$iphide[1].$iphide[2].xxx";
 return $realip;
}

第三中

function iptype1 () { 
if (getenv("HTTP_CLIENT_IP")) { 
   return getenv("HTTP_CLIENT_IP"); 
} 
else { 
   return "none"; 
} 
} 
function iptype2 () { 
if (getenv("HTTP_X_FORWARDED_FOR")) { 
   return getenv("HTTP_X_FORWARDED_FOR"); 
} 
else { 
   return "none"; 
} 
} 
function iptype3 () { 
if (getenv("REMOTE_ADDR")) { 
   return getenv("REMOTE_ADDR"); 
} 
else { 
   return "none"; 
} 
} 
function ip() { 
$ip1 = iptype1(); 
$ip2 = iptype2(); 
$ip3 = iptype3(); 
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") { 
   return $ip1; 
} 
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") { 
   return $ip2; 
} 
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") { 
   return $ip3; 
}   
  else { 
  return "none";

Post a Comment