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


Posted in PHP onMay 16, 2016

本文实例为大家分享了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程序设计有所帮助。

PHP 相关文章推荐
php radio 单选框获取与保持值的实现代码
May 15 PHP
php中防止SQL注入的最佳解决方法
Apr 25 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
Oct 30 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
PHP实现图片的等比缩放和Logo水印功能示例
May 04 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 PHP
php微信小程序解包过程实例详解
Mar 31 PHP
php pdo oracle中文乱码的快速解决方法
May 16 #PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 #PHP
Yii2 assets清除缓存的方法
May 16 #PHP
php使用curl通过代理获取数据的实现方法
May 16 #PHP
php实现转换html格式为文本格式的方法
May 16 #PHP
php中array_unshift()修改数组key注意事项分析
May 16 #PHP
thinkPHP3.2简单实现文件上传的方法
May 16 #PHP
You might like
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
javascript 函数式编程
2007/08/16 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
js常用代码段整理
2011/11/30 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
Python random模块的使用示例
2020/10/10 Python
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
nohup的用法
2014/08/10 面试题
业务代表的岗位职责
2013/11/16 职场文书
优秀学生评语大全
2014/04/25 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
2015年纪委工作总结
2015/05/13 职场文书
增值税发票丢失证明
2015/06/19 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers