各位大神好:
小弟遇到了一個抓取IP的問題想要跟大神們請教,我有一段php抓取用戶ip的code原本運作好好的但是最近遇到怪事
一樣的code
架設在godaddy上的服務取得的ip是 ipv4
但是架設在GCP上的服務取得的ip是 ipv6 (windows server xampp)
我想讓架設在GCP上的服務一樣取得ipv4的格式 不知道大神們有沒有頭緒 感謝
code 如下:
public static function GetIP()
{
foreach (array(
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR',
'HTTP_FORWARDED',
'REMOTE_ADDR',
) as $key) {
if (array_key_exists($key, $_SERVER) === true) {
foreach (explode(',', $_SERVER[$key]) as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
return $ip;
}
}
}
}
}
一般會發生這樣的事。有時要注意的是,是否有用了像是
proxy
負載處理
cdn
當有設定以上的東西。如果在其設定上沒處理好ip轉發。
就沒辦法獲得實際的來源ip。
因為並不太清楚你的主機規劃。所以只能大約的猜想可能是這樣的問題。
當然,其實你可以先直接輸出$_SERVER看看
能不能看到實際的ip存在。
或許已經有轉發了。大多數來說,有時轉發的ip可能會用另外的名稱命名。
浩瀚星空不愧是大神!!
看起來應該就是CFCDN造成的 在同一個GCP上用沒有掛CDN的網域來做測試 可以順利取得自己的ipv4ip。
想再問一個問題 就是這個掛CF的服務會記錄使用者的IP 但是看紀錄有些還是會抓到ipv4 是因為這些紀錄來源沒有經過CF嗎?
門神JanusLin大大 請問一下 裏面放個 IPv4 的頁面就可以了 是什麼意思?
我的code 可以抓到用戶的IP 只是不知道為什麼 那段code放到GCP的服務上變成了IPv6的格式