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开启gzip页面压缩实例
Jun 09 PHP
php读取excel文件示例分享(更新修改excel)
Feb 27 PHP
php使用百度天气接口示例
Apr 22 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
Thinkphp单字母函数使用指南
May 08 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
PHP大文件分割分片上传实现代码
Dec 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从数组中随机抽取一些元素的代码
2012/11/05 PHP
php class类的用法详细总结
2013/10/17 PHP
Laravel5权限管理方法详解
2016/07/26 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
jquery使用remove()方法删除指定class子元素
2015/03/26 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2014/01/19 面试题
数控专业自荐书范文
2014/03/16 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
赔偿协议书范本
2014/09/12 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
驻村工作简报
2015/07/20 职场文书
方法汇总:Python 安装第三方库常用
2022/04/26 Python