最新公告
  • 欢迎您光临源码资源下载站,一个优质的网站源码和小程序源码分享基地。
  • 6中PHP 各种方式获取服务器公网IP 方法

    正文概述 建站知识   2023-12-15 21:22:55  
    获取服务器公网IP是我们在编程时经常会用到的功能,所以我把从不同来源获取公网IP的各种方法整理成了一个示例程序,方便大家使用。
    这个程序一共演示了6种获取公网IP的方式:
    使用PHP内置变量$_SERVER[‘SERVER_ADDR’]
    通过函数gethostbyname()
    使用curl请求外部服务
    使用file_get_contents请求外部服务
    解析标准输出流
    过滤本地IP,返回公网IP
    第6种方法通过过滤掉本地回环地址,再返回第一个公网IP,可以尽量确保获取到的是服务器的公网IP,而不是本地IP,所以结果会更准确。
    完整的源码如下:
    <?php
    echo '<style>body{font-family:Arial;color:#333;font-size:16px;}</style>'; 
    echo '<h1>获取服务端公网IP示例</h1>';
    //方法1:使用$_SERVER变量
    echo '<b>方法1:</b> ' . $_SERVER['SERVER_ADDR'] . '<br>';
    //方法2:使用gethostbyname()函数
    echo '<b>方法2:</b> ' . gethostbyname(gethostname()) . '<br>';
    //方法3:使用curl请求外部服务  
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "http://ipecho.net/plain");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $ip = curl_exec($curl);
    curl_close($curl);
    echo '<b>方法3:</b> ' . $ip . '<br>';
    //方法4:使用file_get_contents请求外部服务
    $ip = file_get_contents('http://ipecho.net/plain');
    echo '<b>方法4:</b> ' . $ip . '<br>';
    //方法5:解析标准输出流  
    ob_start();
    system('curl ipecho.net/plain');  
    $ip = ob_get_contents();
    ob_end_clean();
    echo '<b>方法5:</b> ' . $ip . '<br>';
    //方法6:过滤本地IP,返回第一个公网IP
    function get_local_ip(){
      $ipList = gethostbynamel(gethostname());
      $ipList = array_filter($ipList, function($ip){
        return $ip != '127.0.0.1';
      });
      $ip = reset($ipList);
      return $ip;
    }
    echo '<b>方法6:</b> ' . get_local_ip() . '<br>';
    ?>
    使用方法很简单,只需要将代码保存为php文件,并访问这个页面,就可以看到从不同途径获取的服务器公网IP了。
    这个代码可以帮助大家快速获取服务器公网IP,可用于输出IP地址、获取用户信息、ANALYSIS等功能。同时也展示了PHP的一些语法知识,如数组处理、过滤、输出获取等,可以作为代码示例来参考。
    如果大家在使用中遇到什么问题,欢迎交流讨论!感谢关注和支持!  6中PHP 各种方式获取服务器公网IP 方法
    皓玉源码网,一个优质的源码资源平台!
    皓玉源码网 » 6中PHP 各种方式获取服务器公网IP 方法