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第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
php计算2个日期的差值函数分享
Feb 02 PHP
PHP中is_dir()函数使用指南
May 08 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
Laravel实现autoload方法详解
May 07 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
一个取得文件扩展名的函数
2006/10/09 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
在新窗口打开超链接的方法小结
2013/04/14 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
深入浅析javascript继承体系
2017/10/23 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python3基础之list列表实例解析
2014/08/13 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Django csrf 验证问题的实现
2018/10/09 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
个人自我鉴定总结
2014/03/25 职场文书
人民调解协议书范本
2014/10/11 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
golang json数组拼接的实例
2021/04/28 Golang
Golang表示枚举类型的详细讲解
2021/09/04 Golang