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 相关文章推荐
Get或Post提交值的非法数据处理
Oct 09 PHP
谈谈PHP语法(2)
Oct 09 PHP
PHP 和 MySQL 开发的 8 个技巧
Jan 02 PHP
php采集速度探究总结(原创)
Apr 18 PHP
PHP utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
Apr 08 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
详解Go与PHP的语法对比
May 29 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
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
10个超级有用值得收藏的PHP代码片段
2015/01/22 PHP
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
AngularJS模板加载用法详解
2016/11/04 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
vue双向绑定的简单实现
2016/12/22 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
小小聊天室Python代码实现
2016/08/17 Python
使用python绘制常用的图表
2016/08/27 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
python学习开发mock接口
2019/04/28 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python实现一个论文下载器的过程
2021/01/18 Python
CSS3 简写animation
2012/05/10 HTML / CSS
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
西雅图的买手店:Totokaelo
2019/10/19 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
大学新生军训感言
2014/02/25 职场文书
四风查摆剖析材料
2014/10/10 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS