> php教程 > PHP源码 > php 获取客户端的ip地址程序代码

php 获取客户端的ip地址程序代码

WBOY
풀어 주다: 2016-06-08 17:23:43
원래의
1161명이 탐색했습니다.

获取客户端IP地址我们最简单的办法就是直接使用REMOTE_ADDR但这种如果有代理IP就无法获取了,所以我们要使用HTTP_X_FORWARDED_FOR来获取,下面我来给大家介绍一个获取IP地址函数

<script>ec(2);</script>

最简单的做法

 代码如下 复制代码


function getRealIpAddr()
{
  if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))
  {
    $ip=$_SERVER['HTTP_CLIENT_IP'];
  }
  elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))
  //to check ip is pass from proxy
  {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
  }
  else
  {
    $ip=$_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}


这个我自己写的

 

 代码如下 复制代码
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
  $onlineip = getenv('HTTP_CLIENT_IP');
 } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
  $onlineip = getenv('HTTP_X_FORWARDED_FOR');
 } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
  $onlineip = getenv('REMOTE_ADDR');
 } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
  $onlineip = $_SERVER['REMOTE_ADDR'];
 }
echo $onlineip;
?>

但感觉不怎么样,后来百度找到了一个

实例

 代码如下 复制代码

function real_ip() {
 static $realip = NULL;

 if ($realip !== NULL)  {
  return $realip;
 }

 if (isset($_SERVER)) {
  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
   $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

   /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */
   foreach ($arr AS $ip) {
    $ip = trim($ip);

    if ($ip != 'unknown') {
     $realip = $ip;
     break;
    }
   }
  } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
   $realip = $_SERVER['HTTP_CLIENT_IP'];
  } else {
   if (isset($_SERVER['REMOTE_ADDR'])) {
    $realip = $_SERVER['REMOTE_ADDR'];
   } else {
    $realip = '0.0.0.0';
   }
  }
 } 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');
  }
 }

 preg_match("/[d.]{7,15}/", $realip, $onlineip);
 $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';

 return $realip;
}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿