[英]Is getting an IP address with JavaScript as accurate as getting it through PHP?
[英]getting ip address not accurate in php
那里我有一个应用程序可以获取用户IP地址所在位置的php中的经度和纬度,但是它不能准确显示这是我的代码
<form action="" method="POST">
<input type="submit" name="ipBtn" value="Get ip address">
<?php
if(isset($_POST['ipBtn'])) {
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$region = $geo["geoplugin_region"];
$longitude = $geo["geoplugin_longitude"];
$latitude = $geo["geoplugin_latitude"];
$first_name = $_GET[userName];
$password = $_GET['last_name'];
?>
</form>
获取访问者/客户端IP地址的最简单方法是使用$_SERVER['REMOTE_ADDR']
或$_SERVER['REMOTE_HOST']
变量。
但是,有时这不能返回访问者的正确IP地址,因此我们可以使用其他一些服务器变量来获取IP地址。
以下两个函数等效,只是在如何以及从何处检索值方面有所不同。
getenv()用于获取PHP中环境变量的值。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$ _SERVER是一个数组,其中包含由Web服务器创建的服务器变量。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.