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 09 PHP
一个简单的PHP入门源程序
Oct 09 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
Mar 28 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
php和html的区别点详细总结
Sep 24 PHP
详解Laravel制作API接口
May 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
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php开发工具有哪五款
2015/11/09 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python实现猜单词小游戏
2020/05/22 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python实现反转部分单向链表
2018/09/27 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
python代码实现图书管理系统
2020/11/30 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
教师应聘个人求职信
2013/12/10 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
2014年财务科工作总结
2014/11/11 职场文书
车位出租协议书范本
2016/03/19 职场文书
创业计划书之面包店
2019/09/17 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS