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"; 

相关日志

  • Linux中修改ip的办法
    切换到root账户下 切换到/etc/sysconfig/network-scripts/目录下; 编辑网卡编码:vi ifcfg-ethX X为第X-1个网卡。 DEVICE=ethX 设备名称 ONBOOT=yes 计算...
  • Vista中无法使用localhost访问本机的解决方法
    最近,买了个笔记本,装的是vista,奇怪的是,装上服务器套件后,死活不能用localhost访问,但127.0.0.1可以。搜索了一下,解决办法如下: 找到WINDOWS\SYSTEM32\DRIVERS\ETC\HOSTS 文件。HOSTS是文件名,这个文件没有扩展名。 用记事本打开它,发现多了一个 ::1 localhost 删了它,保存。问题...

PO一下