PHP获取用户访问IP地址的5种方法

 更新时间:2016年05月16日 15:52:59   作者:一九九七年那是  
这篇文章主要为大家详细介绍了PHP获取用户访问IP地址的5种方法,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了5种PHP获取用户访问IP地址的方法,供大家参考,具体内容如下

<?php                                                                 //方法1:
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
 
//方法2:
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP;
 
//方法3:
function getRealIp()
{
  $ip=false;
  if(!empty($_SERVER["HTTP_CLIENT_IP"])){
    $ip = $_SERVER["HTTP_CLIENT_IP"];
  }
  if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
    if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
    for ($i = 0; $i < count($ips); $i++) {
      if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
        $ip = $ips[$i];
        break;
      }
    }
  }
  return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();
 
//方法4:
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
  $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
  $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
  $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
  $ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
  $ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
  $ip = getenv("REMOTE_ADDR");
}
else
{
  $ip = "Unknown";
}
echo $ip ;
 
//方法5:
if(getenv('HTTP_CLIENT_IP')) {
  $onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
  $onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
  $onlineip = getenv('REMOTE_ADDR');
} else {
  $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip; 

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

相关文章

  • 使用Sphinx对索引进行搜索

    使用Sphinx对索引进行搜索

    本篇文章是对使用Sphinx对索引进行搜索的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php操作xml入门之xml基本介绍及xml标签元素

    php操作xml入门之xml基本介绍及xml标签元素

    这篇文章主要介绍了php操作xml入门之xml基本介绍及xml标签元素,实例分析了XML的组成、规范与用法,需要的朋友可以参考下
    2015-01-01
  • PHP方法的返回值示例详解

    PHP方法的返回值示例详解

    这篇文章主要给大家介绍了关于PHP方法返回值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • ThinkPHP基于think-queue的队列插件实现消息推送

    ThinkPHP基于think-queue的队列插件实现消息推送

    think-queue是ThinkPHP官方提供的一个消息队列服务,是专门支持队列服务的扩展包。think-queue消息队列适用于大并发或返回结果时间比较长且需要批量操作的第三方接口,可用于短信发送、邮件发送、APP推送。
    2022-12-12
  • 解析PHP工厂模式的好处

    解析PHP工厂模式的好处

    本篇文章是对PHP工厂模式的好处进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 解析php利用正则表达式解决采集内容排版的问题

    解析php利用正则表达式解决采集内容排版的问题

    本篇文章是对php利用正则表达式解决采集内容排版问题进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php+mysql结合Ajax实现点赞功能完整实例

    php+mysql结合Ajax实现点赞功能完整实例

    这篇文章主要介绍了php+mysql结合Ajax实现点赞功能,以一个完整实例形式详细分析了实现点赞功能中涉及的html页面、Ajax功能及php方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • PHP中error_reporting()用法详解

    PHP中error_reporting()用法详解

    php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看。
    2015-08-08
  • PHP中empty,isset,is_null用法和区别

    PHP中empty,isset,is_null用法和区别

    最近在阅读项目的源码,发现源码中就对empty、isset和is_null函数(语言特性)乱用,有的地方很明显的就挖坑了。不能正确的去理解这些东西,就很可能给后续的开发挖坑了。
    2017-02-02
  • 基于PHPexecl类生成复杂的报表表头示例

    基于PHPexecl类生成复杂的报表表头示例

    这篇文章主要介绍了基于PHPexecl类生成复杂的报表表头功能,结合实例形式分析了实例化PHPexecl类生成复杂报表表头的具体步骤与相关操作技巧,需要的朋友可以参考下
    2016-10-10

最新评论