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 Directory 函数的详解
Mar 07 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
php中autoload的用法总结
Nov 08 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
Nov 15 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 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
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PDO::getAttribute讲解
2019/01/28 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
python实现canny边缘检测
2020/09/14 Python
Django实现随机图形验证码的示例
2020/10/15 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
萌新HTML5 入门指南(二)
2020/11/09 HTML / CSS
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
《赠汪伦》教学反思
2014/04/12 职场文书
本科应届生求职信
2014/08/05 职场文书
服务行业演讲稿
2014/09/02 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技