一、PHP獲取IP函數
PHP獲取IP最常用的函數是$_SERVER[‘REMOTE_ADDR’],這個函數可以獲取客戶端發送請求的IP地址。如果客戶端是通過代理訪問的,比如使用了VPN,那麼使用$_SERVER[‘REMOTE_ADDR’]獲得的IP地址可能是代理服務器的地址,而不是真實客戶端的IP地址。
為了解決此問題,我們需要使用其他函數來獲取真實的IP地址。
二、PHP獲取IP客戶端IP地址
除了通過$_SERVER[‘REMOTE_ADDR’]可以獲取客戶端IP地址,PHP還可以通過$_SERVER[‘HTTP_X_FORWARDED_FOR’]來獲取客戶端IP地址。如果使用了代理服務器,則HTTP_X_FORWARDED_FOR會保存了所有代理服務器的IP地址,其中第一個元素就是客戶端IP地址。
代碼示例:
function get_client_ip() {
$ip = '';
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = trim($ips[0]);
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
三、PHP獲取IP地址
PHP還可以通過使用curl發送HTTP請求,來獲取本機IP地址。
代碼示例:
function get_ip() {
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ipify.org/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true
]);
$ip = curl_exec($curl);
curl_close($curl);
return $ip;
}
四、PHP獲取IP地址的方法
除了上述方法外,還有其他一些方法可以獲取IP地址:
- 使用gethostbyname()函數獲取域名對應的IP地址。
- 通過使用一些外部API,比如ipstack、ipapi等,來獲取IP地址。
五、PHP獲取IPv4地址
IPv4地址是目前最常用的IP地址,常用的格式為xxx.xxx.xxx.xxx的形式。我們可以通過以下方法來判斷IP地址是否是IPv4地址:
代碼示例:
function is_ipv4($ip) {
return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
}
六、PHP獲取當前IP地址
獲取當前IP地址的方法有很多,但是基本思路都是相同的。我們可以通過獲取服務器的主機名,然後使用gethostbyname()函數獲取本機IP地址。
代碼示例:
function get_current_ip() {
$hostname = gethostname();
return gethostbyname($hostname);
}
七、PHP獲取IP地址代碼
下面是獲取IP地址的示例代碼:
$ip = '';
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = trim($ips[0]);
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
echo $ip;
八、PHP獲取IP域名
除了獲取IP地址,還可以通過IP地址獲取域名。我們可以使用gethostbyaddr()函數來獲取IP地址對應的域名。
代碼示例:
function get_domain($ip) {
return gethostbyaddr($ip);
}
九、PHP獲取IP並保存到MySQL
下面是獲取IP地址並保存到MySQL的示例代碼:
$ip = '';
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$ip = trim($ips[0]);
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
mysqli_query($conn, "INSERT INTO ip_table (ip_address) VALUES ('$ip')");
十、總結
PHP獲取IP地址的方法有很多,我們可以根據自己的實際需求來選擇合適的方法。在獲取IP地址時,要注意客戶端可能使用代理服務器訪問,需要使用HTTP_X_FORWARDED_FOR來獲取真實IP地址。
原創文章,作者:KLDL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146126.html
微信掃一掃
支付寶掃一掃