<?php
$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;
?>

【PHP获取访问者IP】的三种方法以及详解

Q:三个IP地址的获取有什么区别?
$_SERVER['REMOTE_ADDR']; $_SERVER['HTTP_CLIENT_IP'];
$_SERVER['HTTP_X_FORWARDED_FOR'];
A:区别如下 $_SERVER['REMOTE_ADDR'];  //访问端(有可能是用户,有可能是代理的)IP $_SERVER['HTTP_CLIENT_IP'];  //代理端的(有可能存在,可伪造) $_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)
 
 
方法一:$_SERVER['HTTP_X_FORWARDED_FOR']来获取相应的地址
 function get_onlineip() {
$onlineip = '';
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
return $onlineip;
}

方法二:利用curl依靠第三方来获取,如http://www.ip138.com/ip2city.asp

 function get_onlineip() {
$ch = curl_init('http://www.ip138.com/ip2city.asp');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$a = curl_exec($ch);
preg_match('/\[(.*)\]/', $a, $ip);
return $ip[1];
}

最新文章

  1. IOS原生地图与高德地图
  2. solr 安装
  3. is_null, empty, isset, unset对比
  4. Android-开发工具
  5. Android加载SO库UnsatisfiedLinkError错误的原因及解决方案
  6. openerp学习笔记 调用工作流
  7. 编写爬虫(spider)的预备知识:用java发送HTTP请求
  8. 1483:[HNOI]2009 梦幻布丁 - BZOJ
  9. HTML的id,name,class
  10. hadoop-2.0.0-mr1-cdh4.2.0源码编译总结
  11. android SlidingTabLayout实现ViewPager页卡滑动效果
  12. 如何编译tizen源码(图文教程)?
  13. Python基础(十一)-面向对象
  14. bzoj 3611[Heoi2014]大工程 虚树+dp
  15. JQuery Deferred 对象剖析
  16. mysql 基础指令/命令
  17. Centos下安装Python的问题汇总
  18. java 中的引用数据类型
  19. ionic4+angular6 混合移动开发 capacitor cordova
  20. 翻译:ZooKeeper OverView

热门文章

  1. 【OF框架】缓存Session/Cookies/Cache代码调用api,切换缓存到Redis
  2. Visual Studio C# 利用git和github协同开发时产生冲突的解决办
  3. SpringBoot项目的异常
  4. js onclick事件传参
  5. tomcate环境搭建
  6. 01_第一次如何上传GitHub(转)Updates were rejected because the tip of your current branch is behind
  7. LeetCode 317. Shortest Distance from All Buildings
  8. boost::swap
  9. centos6.5 安装163yum源
  10. [bzoj 5332][SDOI2018]旧试题