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 相关文章推荐
zend api扩展的php对象的autoload工具
Apr 18 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
Jun 25 PHP
php实现两个数组相加的方法
Feb 17 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
May 13 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
利用ajax+php实现商品价格计算
Mar 31 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
深入理解node.js http模块
2018/01/24 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python日志模块logging基本用法分析
2018/08/23 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
浅谈Django+Gunicorn+Nginx部署之路
2019/09/11 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
Python 如何创建一个线程池
2020/07/28 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python中xlrd模块的使用详解
2021/02/01 Python
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
办公文员的工作岗位职责
2013/11/12 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
新农村建设标语
2014/06/24 职场文书
邓小平理论心得体会
2014/09/09 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
AngularJS实现多级下拉框
2022/03/25 Javascript