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 相关文章推荐
PHP n个不重复的随机数生成代码
Jun 23 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
php文件操作实例代码
May 10 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
基于php权限分配的实现代码
Apr 28 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
twig模板常用语句实例小结
Feb 04 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
Laravel5.5 动态切换多语言的操作方式
Oct 25 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 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
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python字符串切片操作知识详解
2016/03/28 Python
深入理解python多进程编程
2016/06/12 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
python两种注释用法的示例
2020/10/09 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
Sony C++笔试题
2013/03/10 面试题
销售文员的岗位职责
2013/11/20 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
责任担保书范文
2014/05/21 职场文书
初三毕业感言
2015/07/31 职场文书
学会感恩主题班会
2015/08/12 职场文书
Python OpenCV超详细讲解基本功能
2022/04/02 Python
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js