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

2023-08-11 0 729

获取服务器公网IP是我们在编程时经常会用到的功能,所以我把从不同来源获取公网IP的各种方法整理成了一个示例程序,方便大家使用。

这个程序一共演示了6种获取公网IP的方式:

  1. 使用PHP内置变量$_SERVER[‘SERVER_ADDR’]
  2. 通过函数gethostbyname()
  3. 使用curl请求外部服务
  4. 使用file_get_contents请求外部服务
  5. 解析标准输出流
  6. 过滤本地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的一些语法知识,如数组处理、过滤、输出获取等,可以作为代码示例来参考。

如果大家在使用中遇到什么问题,欢迎交流讨论!感谢关注和支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开USDT(trc-20)扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

Ts:本站所有内容均为互联网收集整理和网友上传。仅限于学习研究,请必须在24小时内删除。否则由此引发的法律纠纷及连带责任本站概不承担。

如侵犯到您的合法权益,请联系我们删除侵权资源!

分享驿站 技术文章 6中PHP 各种方式获取服务器公网IP 方法 https://www.fxe.cc/10064.html

常见问题
  • 如何遇到网站源码不会安装,可以尝试搜索“程序名称 教程”,如dedecms 教程。 也可以查看 网站安装常见问题总结。
查看详情
  • 由于下载服务的特殊性,一旦您购买使用了下载服务,就不接受退款申请。详情请参考《分享驿站服务》条例。
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务