有许多服务不是免费的, 它们为开发人员提供了一个简单的API, 可以从服务器请求中检索国家, 大洲和其他地理数据。但是, 有些开发人员不愿意为服务付费, 因为你只是在测试, 没有钱或任何其他原因, 因此不愿意为该服务付费。 geoplugin.net页面提供了免费的api, 以检索向我们的服务器发出请求的用户所在的国家/地区。
我们需要使用get参数向geoplugin.net/json.gp发出请求, 该参数必须是请求的IP。
我们可以免费检索一些重要信息, 该对象中提供以下密钥:
- geoplugin_request:包含我们刚刚发送的IP get参数中的IP。
- geoplugin_status:请求的http状态代码
- geoplugin_city:请求IP的城市(如果有)
- geoplugin_countryCode:2个字符的国家/地区代码(美国, 德国, 俄罗斯)
- geoplugin_countryName
- geoplugin_continentCode
- geoplugin_currencyCode:国家处理的货币(欧元, 美元)
- geoplugin_regionCode
- geoplugin_regionName
- geoplugin_areaCode
- geoplugin_currencySymbol:货币的HTML符号。
$ip = $_SERVER['REMOTE_ADDR'];
// This will contain the ip of the request// You can use a more sophisticated method to retrieve the content of a webpage with php using a library or something// We will retrieve quickly with the file_get_contents$dataArray = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));
var_dump($dataArray);
// outputs something like (obviously with the data of your IP) :// geoplugin_countryCode =>
"DE", // geoplugin_countryName =>
"Germany"// geoplugin_continentCode =>
"EU"echo "Hello visitor from: ".$dataArray["geoplugin_countryName"];
使用Javascript有点复杂。首先, 我们需要以某种方式检索用户的IP, 问题是用php检索IP并非那么容易, 你需要一种或另一种方式进行服务器调用以检索IP。如果由于没有服务器等原因而无法使用PHP, 请在StackOverflow中查看此问题, 可以通过添加使用JSONP(回调)的脚本来检索ip。
然后, 我们需要对上述网址进行请求以获取ip的国家/地区, 但是如果我们仅对网址进行请求, 就会遇到以下问题:
XMLHttpRequest cannot load http://www.geoplugin.net/json.gp?ip=my.ip.numberNo 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mywebsiterequestdomain' is therefore not allowed access.
此问题是由于CORS限制所致, 你无法对不是你自己的服务器执行ajax请求。要解决此问题, 我们需要跳过此限制, 我们将使用cors-anywhere网站来避免这种情况。然后我们的请求将如下所示:
var ip = "the ip number, retrieved of some way by a server";
// the request will be to http://www.geoplugin.net/json.gp?ip=my.ip.number but we need to avoid the cors issue, and we use cors-anywhere api.$.getJSON("https://cors-anywhere.herokuapp.com/http://www.geoplugin.net/json.gp?ip="+ip, function(response){console.log(response);
// output an object which contains the information.
alert("Hello visitor from "+ response.geoplugin_countryName);
});
注意:如果可以并且有服务器可以发出请求, 请使用PHP方式, 因为它既简单又简洁, 因为我们不需要在任何地方使用cors。
下面的小提琴允许你使用带有javascript和jQuery.getJSON函数的简单表单从ip检索国家/地区。转到结果标签, 然后自己尝试。
【如何使用请求ip免费检测php或javascript中访客的国家】玩得开心 !
推荐阅读
- 如何在php或symfony中使用jQuery ajax上传文件
- 如何使用tcpdf在Symfony 2和3中使用php创建pdf文件
- 读《你不知道的javascript》(上)部分东西记录
- 程序员|手把手教你使用 Python 制作贪吃蛇游戏
- “App not not installed”在一台设备上
- Android(了解APK安装过程)
- Android应用程序包在手机上安装在哪里
- 将Git添加到PATH变量 - 在AppData / Local下找不到GitHub
- 我以普通用户的身份安装了Android Studio软件包。那么如何以root身份打开它呢()