pta/ipinfo

一个基本的PHP包装器,用于通过IP Info DB API将基于IP的用户位置检测添加到您的应用程序中。

0.1.3 2016-10-25 16:06 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:37:35 UTC


README

一个基本的PHP包装器,通过使用IP Info DB API将基于IP的用户位置检测添加到您的应用程序中。

安装

pta/ipinfo添加到composer.json的依赖项中

{
    "require": {
        "pta/ipinfo": "0.1.*"
    }
}

使用composer update更新您的包或使用composer install安装。

您也可以使用composer require pta/ipinfo添加该包,然后指定您想要的版本。

方法

获取基于城市的详细信息

您可以使用->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(嗯,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);

待办事项

  • 允许开发者不传递IP地址(因为API不需要)
  • 函数->getIpAddress()可能需要额外的测试(可能需要额外测试)
  • 将这个家伙作为一个Composer包

许可协议

这是一个开源软件,受MIT许可协议许可。