pta / ipinfo
一个基本的PHP包装器,用于通过IP Info DB API将基于IP的用户位置检测添加到您的应用程序中。
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许可协议许可。