danio1024/ip-user-location

一个基本的PHP包装器,用于将基于IP的用户位置检测集成到您的应用程序中。

dev-master / 1.0.x-dev 2013-12-02 07:25 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:54:33 UTC


README

使用IP Info DB API将基于IP的用户位置检测集成到您的应用程序中的基本PHP包装器。

方法

获取基于城市的详细信息

您可以使用 ->getCity($ip) 来检索关于IP地址的城市级别信息。

示例json响应

{
  "statusCode" : "OK",
  "statusMessage" : "",
  "ipAddress" : "81.149.15.65",
  "countryCode" : "GB",
  "countryName" : "UNITED KINGDOM",
  "regionName" : "ENGLAND",
  "cityName" : "SALISBURY",
  "zipCode" : "SP1 1TP",
  "latitude" : "51.0693",
  "longitude" : "-1.79569",
  "timeZone" : "+01:00"
}

获取基于国家的详细信息

您可以使用 ->getCountry($ip) 来检索关于IP地址的国家级别信息。这显然比检索城市级别信息要快。

示例json响应

{
  "statusCode" : "OK",
  "statusMessage" : "",
  "ipAddress" : "81.149.15.65",
  "countryCode" : "GB",
  "countryName" : "UNITED KINGDOM"
}

验证IP地址

您可以使用 ->validIP($ip) 来查看指定的IP地址是否有效。

在内部,这使用了 filter_var($ip, FILTER_VALIDATE_IP),我假设这是相当可靠的。如果您有任何更好的方法,请发送pull request或发电子邮件给我

获取用户的IP地址

您可以使用 ->getIpAddress() 来检索用户的IP地址。

您不应该基于此数据信任用户,HTTP头部可以被伪造,非常简单。

API密钥和查询限制

您可以在这里获取(免费的)API密钥,显然这应该是私有的。

虽然没有严格的查询限制,但如果您每秒发送超过2个请求,它们将被排队。您仍然会得到响应,但响应速度将减慢到大约每秒1个。

我强烈建议使用某种形式的缓存。Cookies(嗯,饼干)可能是处理这个问题的最简单方法。

// Create a new instance
$ipInfo = new ipInfo (APIKEY, 'json');

// Grab the user location info
$location = json_decode($ipInfo->getCountry($userIP));

// Create a cookie holding the country code for 1 hour (3600 seconds)
setcookie('location', $location['countryCode'], time() + 3600);

待办事项

许可证

这是一个开源软件,根据MIT许可证授权。