获取客户端真实IP地址的方法可以使用 $_SERVER['REMOTE_ADDR']
。但是需要注意的是,如果客户端使用了代理服务器,那么获取到的IP地址可能是代理服务器的IP地址,而不是客户端真实的IP地址。如果您需要获取客户端真实的IP地址,可以尝试使用 $_SERVER['HTTP_X_FORWARDED_FOR']
。但是需要注意的是,这个方法也不能保证百分之百的准确性,因为有些代理服务器可能会伪造这个值。
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$ip_details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
$country = $ip_details->country;
$region = $ip_details->region;
$city = $ip_details->city;
$ip2 = $_SERVER['REMOTE_ADDR'];
$ip2_details = json_decode(file_get_contents("http://ipinfo.io/{$ip2}/json"));
$ip2_country = $ip2_details->country;
$ip2_region = $ip2_details->region;
$ip2_city = $ip2_details->city;
echo "您的IP地址是:" . $ip .",CDN节点是:".$ip2;
$log_message = date("Y-m-d H:i:s") . " 您的IP地址是"." IP地址:" . $ip . ",属地:" . $country . " " . $region . " " . $city . ",CDN地址:" . $ip2 . ",属地:" . $ip2_country . " " . $ip2_region . " " . $ip2_city . " 访问了网站。\n";
error_log($log_message, 3, "access.log");
评论前必须登录!
注册