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 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
PHP DataGrid 实现代码
Aug 12 PHP
php集成环境xampp中apache无法启动问题解决方案
Nov 18 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
迁移PHP版本到PHP7
Feb 06 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
php json_encode与json_decode详解及实例
Dec 13 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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 木马攻击防御技巧
2009/06/13 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
CI框架的安全性分析
2016/05/18 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP 实现链式操作
2021/03/09 PHP
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
Bootstrap每天必学之导航
2015/11/26 Javascript
javascript实现拖放效果
2015/12/16 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
使用Python实现牛顿法求极值
2020/02/10 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
上海微创软件面试题
2012/06/14 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
中医专业职业生涯规划书范文
2014/01/04 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
教育实习指导教师评语
2014/12/31 职场文书
学校捐书活动总结
2015/05/08 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL