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实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP中生成UUID自定义函数分享
Jun 10 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
初识laravel5
2015/03/02 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
javascript第一课
2007/02/27 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
2019/10/26 Javascript
Python 多线程的实例详解
2017/09/07 Python
python logging设置level失败的解决方法
2020/02/19 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
JPA面试常见问题
2016/11/14 面试题
C语言中break与continue的区别
2012/07/12 面试题
Java软件工程师综合面试题笔试题
2013/09/08 面试题
经典英文广告词
2014/03/18 职场文书
学生会主席演讲稿
2014/04/25 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
学风建设演讲稿
2014/09/12 职场文书
2014年国庆节寄语
2014/09/19 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
python 判断文件或文件夹是否存在
2022/03/18 Python
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python