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 字符串函数收集
Mar 29 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
Dec 05 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
ThinkPHP打水印及设置水印位置的方法
Oct 14 PHP
thinkPHP分页功能实例详解
May 05 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
php表单处理操作
Nov 16 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP验证类的封装与使用方法详解
Jan 10 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
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
Javascript的严格模式strict mode详细介绍
2014/06/06 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
vue二级路由设置方法
2018/02/09 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python面向对象之继承代码详解
2018/01/29 Python
Python3.6简单反射操作示例
2018/06/14 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
Python脚本调试工具安装过程
2021/01/11 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
JAVA和C++的区别
2013/10/06 面试题
银行会计财务工作个人的自我评价
2013/10/29 职场文书
劳资专员岗位职责
2013/12/27 职场文书
二年级数学教学反思
2014/01/21 职场文书
给老婆的保证书
2015/01/16 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
周一问候语大全
2015/11/10 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL