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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
php微信开发之关注事件
Jun 14 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图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
php两种无限分类方法实例
2015/04/21 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
载入进度条 效果
2006/07/08 Javascript
FireFox JavaScript全局Event对象
2009/06/14 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
javascript中的Function.prototye.bind
2015/06/25 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Python中super函数用法实例分析
2019/03/18 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
5款实用的python 工具推荐
2020/10/13 Python
实习医生自我评价
2013/09/22 职场文书
中学生操行评语
2014/04/24 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
见习报告格式范文
2014/11/08 职场文书
道歉信怎么写
2015/05/12 职场文书
element多个表单校验的实现
2021/05/27 Javascript
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android