php獲取ip不準確可能是用戶使用了代理,因此「$_SERVER['REMOTE_ADDR']」並不能感知用戶真實IP,其解決方法就是透過定義一個「X-Forwarded-For」的實體頭來取得真實ip。
本文操作環境:Windows7系統、PHP7.1、Dell G3電腦。
php 取得的ip不真實?
各位,突然想到一個東西,我們這邊不是一般$_SERVER[‘REMOTE_ADDR’];取得伺服器內網IP(很可能就是伺服器的代理IP)。那個代碼是沒有問題,然後我們使用了反向代理(nginx等),用戶也可能使用代理,因此單純的$_SERVER[‘REMOTE_ADDR’]並不能感知用戶真實IP。
但是有個參數能透過代理IP取到真實使用者的位址。對HTTp協定進行擴充。定義了一個叫做X-Forwarded-For的實體頭。
因為我們考慮這個,主要是做廣告的星友們,畢竟別人可以代理,刷量呢。
【建議:PHP影片教學】
程式碼如下:
//获取用户IP地址 public function getIp() { if(!empty($_SERVER["HTTP_CLIENT_IP"])) { $cip = $_SERVER["HTTP_CLIENT_IP"]; } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) { $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if(!empty($_SERVER["REMOTE_ADDR"])) { $cip = $_SERVER["REMOTE_ADDR"]; } else { $cip = ''; } preg_match("/[\d\.]{7,15}/", $cip, $cips); $cip = isset($cips[0]) ? $cips[0] : 'unknown'; unset($cips); return $cip; }
以上是php取得ip不準怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!