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无限分类的类
Jan 02 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
一次因composer错误使用引发的问题与解决
Mar 06 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
YII框架关联查询操作示例
Apr 29 PHP
PHP实现的文件浏览器功能简单示例
Sep 12 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
德生PL550的电路分析
2021/03/02 无线电
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python随机生成彩票号码的方法
2015/03/05 Python
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
浅谈Python 递归算法指归
2019/08/22 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
关于Python解包知识点总结
2020/05/05 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
函授毕业自我鉴定
2014/02/04 职场文书
优秀党支部申报材料
2014/12/24 职场文书
2016公司年会通知范文
2015/04/25 职场文书
南京大屠杀观后感
2015/06/02 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python