php無法獲取真實ip怎么辦

這篇文章主要介紹php無法獲取真實ip怎么辦,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是專業(yè)的北侖網(wǎng)站建設(shè)公司,北侖接單;提供成都做網(wǎng)站、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行北侖網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

一、獲取用戶真實IP地址

 public static function getClientIp()
 {
 if (getenv('HTTP_CLIENT_IP')) {
  $ip = getenv('HTTP_CLIENT_IP');
 }
 if (getenv('HTTP_X_REAL_IP')) {
  $ip = getenv('HTTP_X_REAL_IP');
 } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
  $ip = getenv('HTTP_X_FORWARDED_FOR');
  $ips = explode(',', $ip);
  $ip = $ips[0];
 } elseif (getenv('REMOTE_ADDR')) {
  $ip = getenv('REMOTE_ADDR');
 } else {
  $ip = '0.0.0.0';
 }

 return $ip;
 }

注意:

$_SERVER和getenv的區(qū)別,getenv不支持IIS的isapi方式運行的php。getenv(“REMOTE_ADDR”)函數(shù)在 apache下能正常獲取ip地址,而在iis中沒有作用,而$_SERVER['REMOTE_ADDR']函數(shù),既可在apache中成功獲取訪客的ip地址,在iis下也同樣有效。

二、關(guān)于REMOTE_ADDR

這個變量獲取到的是《直接來源》的 IP 地址,所謂《直接來源》指的是直接請求該地址的客戶端 IP 。這個 IP 在單服務(wù)器的情況下,很準確的是客戶端 IP ,無法偽造。當然并不是所有的程序都一定是單服務(wù)器,比如在采用負載均衡的情況(比如采用 haproxy 或者 nginx 進行負載均衡),這個IP就是轉(zhuǎn)發(fā)機器的IP,因為過程是客戶端->負載均衡->服務(wù)端。是由負載均衡直接訪問的服務(wù)端而不是客戶端。

三、關(guān)于 HTTP_X_FORWARDED_FOR 和 HTTP_CLIENT_IP

在負載均衡的情況下直接使用 REMOTE_ADDR 是無法獲取客戶端 IP 的,這就是一個問題,必須解決。于是就衍生出了負載均衡端將客戶端 IP 加入到 HEAD 中發(fā)送給服務(wù)端,讓服務(wù)端可以獲取到客戶端的真實 IP 。當然也就產(chǎn)生了各位所說的偽造,畢竟 HEAD 除了協(xié)議里固定的那幾個數(shù)據(jù),其他數(shù)據(jù)都是可自定義的。

以上是php無法獲取真實ip怎么辦的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:php無法獲取真實ip怎么辦
分享鏈接:http://muchs.cn/article14/jojsge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計商城網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司