$_SERVER
全局變量來(lái)獲取服務(wù)器的公網(wǎng)IP地址。以下是一個(gè)示例代碼:,,“php,,
`,,這段代碼定義了一個(gè)名為
getPublicIP的函數(shù),它返回從
$_SERVER超全局變量中獲取的遠(yuǎn)程客戶端的IP地址。通過(guò)調(diào)用
getPublicIP()函數(shù)并使用
echo`語(yǔ)句打印結(jié)果,你可以在頁(yè)面上顯示服務(wù)器的公網(wǎng)IP地址。
獲取本機(jī)的公網(wǎng)IP地址在PHP中可以通過(guò)多種方式實(shí)現(xiàn),以下是兩種常用的方法:
方法一:使用外部服務(wù)
這種方法是通過(guò)訪問(wèn)一個(gè)提供公網(wǎng)IP查詢服務(wù)的URL來(lái)獲取本機(jī)的公網(wǎng)IP地址,常見(jiàn)的服務(wù)有https://api.ipify.org
和https://ipinfo.io/ip
。
<?php $url = 'https://api.ipify.org'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $publicIp = curl_exec($ch); curl_close($ch); echo "本機(jī)公網(wǎng)IP地址:".$publicIp; ?>
方法二:使用命令行工具
另一種方法是通過(guò)執(zhí)行命令行工具來(lái)獲取本機(jī)的公網(wǎng)IP地址,在Windows系統(tǒng)中,可以使用nslookup
命令;在Linux和macOS系統(tǒng)中,可以使用dig
命令。
<?php $command = 'nslookup myip.opendns.com resolver1.opendns.com'; $output = shell_exec($command); preg_match('/^Address: ([09.]+)/', $output, $matches); $publicIp = $matches[1]; echo "本機(jī)公網(wǎng)IP地址:".$publicIp; ?>
相關(guān)問(wèn)題與解答
1、問(wèn)題:如何判斷獲取到的公網(wǎng)IP是否有效?
解答: 可以通過(guò)訪問(wèn)一些提供IP信息查詢的網(wǎng)站,如https://ipinfo.io/
,輸入獲取到的公網(wǎng)IP地址進(jìn)行驗(yàn)證,如果返回的信息與本機(jī)所在的地理位置相符,則說(shuō)明獲取到的公網(wǎng)IP是有效的。
2、問(wèn)題:如何避免頻繁請(qǐng)求外部服務(wù)導(dǎo)致被限制?
解答: 可以設(shè)置一定的時(shí)間間隔,例如每小時(shí)或每天請(qǐng)求一次外部服務(wù),以減少對(duì)外部服務(wù)的請(qǐng)求頻率,可以考慮使用緩存機(jī)制,將獲取到的公網(wǎng)IP地址存儲(chǔ)起來(lái),在一定時(shí)間內(nèi)直接使用緩存的數(shù)據(jù),而不是每次都請(qǐng)求外部服務(wù)。