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代码
Dec 06 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
PHP设计模式 注册表模式
Feb 05 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
curl和libcurl的区别简介
Jul 01 PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 PHP
Symfony的安装和配置方法
Mar 17 PHP
PHP fopen函数用法实例讲解
Feb 15 PHP
php文件包含的几种方式总结
Sep 19 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 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使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
Angular工具方法学习
2016/12/26 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
详解a++和++a的区别
2017/08/30 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
Python如何对XML 解析
2020/06/28 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
金鑫耀Java笔试题
2014/09/06 面试题
幼儿园长自我鉴定
2013/10/17 职场文书
集体婚礼策划方案
2014/02/22 职场文书
人力资源主管职责范本
2014/03/05 职场文书
公司年会主持词
2014/03/22 职场文书
伦敦奥运会口号
2014/06/13 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2014年流动人口工作总结
2014/11/26 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
小数乘法教学反思
2016/02/22 职场文书
php修改word的实例方法
2021/11/17 PHP