一、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-hk/n/146126.html