PHP实现获取客户端IP并获取IP信息


Posted in PHP onMarch 17, 2015

代码很简洁,功能很实用,这里就不多废话了,直接奉上:

<?php

/**

 * 获取客户端IP

 * @param  integer $type 返回类型 0:string,1:long

 * @return string|long

 */

function getClientIp($type = 0) {

    $ip = NULL;

    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

        $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);

        $pos = array_search('unknown',$arr);

        if(false !== $pos) unset($arr[$pos]);

        $ip  = trim($arr[0]);

    }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {

        $ip = $_SERVER['HTTP_CLIENT_IP'];

    }elseif (isset($_SERVER['REMOTE_ADDR'])) {

        $ip = $_SERVER['REMOTE_ADDR'];

    }

    $long = sprintf("%u", ip2long($ip));

    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);

    return $ip[$type];

}

/**

 * 获取IP信息

 * @param  string|long $ip  IP地址

 * @return array

 */

function getIpInfo($ip)

{

    if (is_long($ip)) {

        $ip = long2ip($ip);

    }

    $api = 'http://ip.taobao.com/service/getIpInfo.php';

    $ret = file_get_contents($api . '?ip=' . $ip);

    $ret = json_decode($ret, true);

    if ($ret['code'] == 0) {

        return $ret['data'];

    } 

    return array();

}

以上就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
Sorting Array Values in PHP(数组排序)
Sep 15 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
解析php中heredoc的使用方法
Jun 17 PHP
PHP上传图片进行等比缩放可增加水印功能
Jan 13 PHP
php实现的日历程序
Jun 18 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
支付宝接口开发集成支付环境小结
Mar 17 #PHP
php读取文件内容到数组的方法
Mar 16 #PHP
php实现以只读方式打开文件的方法
Mar 16 #PHP
php实现在服务器上创建目录的方法
Mar 16 #PHP
php实现删除空目录的方法
Mar 16 #PHP
php上传文件并存储到mysql数据库的方法
Mar 16 #PHP
php保存信息到当前Session的方法
Mar 16 #PHP
You might like
关于文本留言本的分页代码
2006/10/09 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
PHP程序员不应该忽略的3点
2015/10/09 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
值得收藏的vuejs安装教程
2017/11/21 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
js里面的变量范围分享
2020/07/18 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
浅谈MySQL中的触发器
2015/05/05 Python
Python unittest模块用法实例分析
2018/05/25 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
美国电视购物HSN官网:HSN
2016/09/07 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
寄语是什么意思
2014/04/10 职场文书
廉洁自律个人总结
2015/02/14 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
详解pytorch创建tensor函数
2022/03/22 Python
python如何查找列表中元素的位置
2022/05/30 Python
python计算列表元素与乘积详情
2022/08/05 Python