php 获取本机外网/公网IP的代码


Posted in PHP onMay 09, 2010

大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP,

但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了。

经过我的研究有两种方法来获取用户的真实外网IP。

方法一:curl

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]; 
}

方法二:$_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; 
}
PHP 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
php计算当前程序执行时间示例
Apr 24 PHP
PHP实现设计模式中的抽象工厂模式详解
Oct 11 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
Nov 16 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
php生成word并下载代码实例
Mar 15 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
Oct 16 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 #PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 #PHP
php 各种应用乱码问题的解决方法
May 09 #PHP
php 输出双引号"与单引号'的方法
May 09 #PHP
php for 循环语句使用方法详细说明
May 09 #PHP
php 函数使用方法与函数定义方法
May 09 #PHP
php 获取select下拉列表框的值
May 08 #PHP
You might like
php 采集书并合成txt格式的实现代码
2009/03/01 PHP
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
js二级地域选择的实现方法
2013/06/17 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
js实现移动端导航点击自动滑动效果
2017/07/18 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
Javascript中的this,bind和that使用实例
2019/12/05 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
Python随机数random模块使用指南
2016/09/09 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Python用字典构建多级菜单功能
2019/07/11 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
英国网上购买门:Direct Doors
2018/06/07 全球购物
抽奖活动主持词
2014/03/31 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
莫言诺贝尔获奖演讲稿
2014/05/21 职场文书
创文明城市标语
2014/06/16 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers