6中PHP 各种方式获取服务器公网IP 方法

时间:2023年08月11日

/

来源:网络

/

编辑:佚名

获取服务器公网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的一些语法知识,如数组处理、过滤、输出获取等,可以作为代码示例来参考。
如果大家在使用中遇到什么问题,欢迎交流讨论!感谢关注和支持!
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。