• 技术文章 >后端开发 >php教程

    php 获取本机外网/公网IP的代码_PHP教程

    2016-07-21 15:38:02原创1236
    大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP,

    但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了。

    经过我的研究有两种方法来获取用户的真实外网IP。


    方法一:curl
    复制代码 代码如下:

    function get_onlineip() {
    $ch = curl_init('http://www.ip138.com/ip2city.asp');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $a = curl_exec($ch);
    preg_match('/\[(.*)\]/', $a, $ip);
    return $ip[1];
    }



    方法二:$_SERVER['HTTP_X_FORWARDED_FOR']来获取相应的地址
    复制代码 代码如下:

    function get_onlineip() {
    $onlineip = '';
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
    $onlineip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
    $onlineip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
    $onlineip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
    $onlineip = $_SERVER['REMOTE_ADDR'];
    }
    return $onlineip;
    }

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/321807.htmlTechArticle大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP, 但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 获取 本机 外网 公网 代码 大家 一般 都是 SERVER REMOTE ADDR 获取 用户
    上一篇:php将数据库导出成excel的方法_PHP教程 下一篇:PHP similar_text 字符串的相似性比较函数_PHP教程
    PHP编程就业班

    相关文章推荐

    • PHP中的日期处理方法集锦_PHP教程• 在PHP中使用灵巧的体系结构_PHP教程• 抓取YAHOO股票报价的类_php技巧• Yii中创建自己的Widget实例_PHP• php短址转换实现方法_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网