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 管理系统程序中的后门
Aug 05 PHP
php foreach、while性能比较
Oct 15 PHP
php学习笔记之 函数声明
Jun 09 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
php中动态修改ini配置
Oct 14 PHP
PHP中substr函数字符串截取用法分析
Jan 07 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
自制PHP框架之模型与数据库
May 07 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
WordPress伪静态规则设置代码实例
Dec 10 PHP
PHP7移除的扩展和SAPI
Mar 09 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/12/25 PHP
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python3.x中自定义比较函数
2015/04/24 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
详解Python 函数如何重载?
2019/04/23 Python
python实现动态创建类的方法分析
2019/06/25 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
毕业生自荐书
2013/12/18 职场文书
给客户的道歉信
2014/01/13 职场文书
区级文明单位申报材料
2014/05/15 职场文书
新党章心得体会
2014/09/04 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
小班上学期个人总结
2015/02/12 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL