我想通过使用任何在线服务(例如https://www.ipstack.com或https://www.ipify.org/)来获得访问者IP,但是当我使用PHP代码时,该问题返回了服务器IP。我了解这是因为代码在服务器中运行,并且返回服务器IP,但是如何获得访问者IP? 我不想使用REMOTE_ADDR左右。
我尝试使用getJSON获取访问者IP,但问题是如何将数据传递到PHP代码并在那里使用它。
=======更新======
其他页面无法解决问题,因此请不要添加链接。
我要使用此api的问题: http://api.ipstack.com/check?access_key=xxxxx&output=json
在这里,我们将以JSON格式获取数据。但是如何将数据传递给PHP?
==========更新========== 我现在正在使用的代码来获取访问者IP。
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
if (array_key_exists($key, $_SERVER) === true) {
foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip) {
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false) {
return $ip;
}
}
}
}
谢谢
答案 0 :(得分:0)
我要使用此api的问题:http://api.ipstack.com/check?access_key=xxxxx&output=json
该/check
API是查找进行该API调用的IP地址的快捷方式。如果您是通过PHP在服务器上制作的,它将始终返回服务器的IP地址。
使用标准查找并将其传递给用户REMOTE_ADDR
,如https://ipstack.com/documentation#standard所述:
$url = "https://api.ipstack.com/{$_SERVER['REMOTE_ADDR']}?access_key=YOUR_ACCESS_KEY";
$json = file_get_contents($url);