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开发过程中常用函数收藏
Dec 14 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
php批量上传的实现代码
Jun 09 PHP
php三维数组去重(示例代码)
Nov 26 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
yii数据库的查询方法
Dec 28 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
PHP邮箱验证示例教程
Jun 01 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
Dec 02 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 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获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
php cli配置文件问题分析
2015/10/15 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
2019/05/06 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
脚本吧 - 幻宇工作室用到js,超强推荐share.js
2006/12/23 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
深入理解Node.js中通用基础设计模式
2017/09/19 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
Eclipse + Python 的安装与配置流程
2013/03/05 Python
简单解析Django框架中的表单验证
2015/07/17 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Django的models中on_delete参数详解
2019/07/16 Python
主管会计岗位责任制
2014/02/10 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
放飞理想演讲稿
2014/09/09 职场文书
践行三严三实心得体会
2014/10/13 职场文书
怎么写工作检讨书
2014/11/16 职场文书
保证书格式
2015/01/16 职场文书
解除同居协议书
2015/01/29 职场文书
护理工作个人总结
2015/03/03 职场文书
八月一日观后感
2015/06/10 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书