danio1024 / ip-user-location
一个基本的PHP包装器,用于将基于IP的用户位置检测集成到您的应用程序中。
dev-master / 1.0.x-dev
2013-12-02 07:25 UTC
Requires
- php: >=5.3.3
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);
待办事项
- 允许开发者不传递IP地址(因为它不是API所必需的)
->getIpAddress()
函数可能需要额外的测试(可能需要额外的测试)
许可证
这是一个开源软件,根据MIT许可证授权。