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下使用SMTP发邮件的代码
Jan 10 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
PHP通过串口实现发送短信
Jul 08 PHP
php网页版聊天软件实现代码
Aug 12 PHP
Yii2 批量插入、更新数据实例
Mar 15 PHP
PDO::rollBack讲解
Jan 29 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 PHP
PHP基于array_unique实现二维数组去重
Jul 14 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
PHP5中MVC结构学习
2006/10/09 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
vue.js中npm安装教程图解
2018/04/10 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
用Python设计一个经典小游戏
2017/05/15 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
python实现Decorator模式实例代码
2018/02/09 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
什么时候用assert
2015/05/08 面试题
小组合作学习反思
2014/02/18 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
劳动竞赛活动总结
2014/05/05 职场文书
倡议书格式及范文
2015/04/29 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书