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+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
抓取并下载CSS中所有图片文件的php代码
Sep 26 PHP
php指定函数参数默认值示例代码
Dec 04 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php设置session值和cookies的学习示例
Mar 21 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 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
Banner程序
2006/10/09 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
JS中的变量作用域(console版)
2020/07/18 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
python实现RSA加密(解密)算法
2016/02/17 Python
使用pyecharts无法import Bar的解决方案
2020/04/23 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
高中生期末评语大全
2014/01/28 职场文书
大一新生学期自我评价
2014/04/09 职场文书
节能环保口号
2014/06/12 职场文书
安全施工责任书
2014/08/25 职场文书
大学生村官入党自传
2015/06/26 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python