【发布时间】:2024-01-16 01:02:01
【问题描述】:
问题
我使用 php 和一个 api 来使用用户 IP 来获取本地货币。它已经工作了一段时间,但突然间,我的 ISP 不断给我两个 IP 地址。
通常,如果我回显$ipaddress,我会得到类似xxx.xxx.xxx.xxx 的内容,因此它会像这样通过API
https://usercountry.com/v1.0/json/xxx.xxx.xxx.xxx?token=<API KEY>
但最近$ipaddress 给了我两个 IP(不同的 IP 地址)像这样xxx.xxx.xxx,yyy.yyy.yyy
所以现在它像这样通过 API
https://usercountry.com/v1.0/json/xxx.xxx.xxx.xxx,yyy.yyy.yyy.yyy?token=<API KEY>
返回错误是因为 UserCountry.com 不允许双 IP
每当发生双重 IP 时,我都会使用此检查
if (strlen($ipaddress) > 15){
$ipaddress = "Double IP";
}
我的分析
$ipaddress= xxx.xxx.xxx.xxx,yyy.yyy.yyy.yyy
当它发生时,第一个 IP (xxx.xxx.xxx.xxx) 似乎是真实的(IP 与我在同一个国家),但第二个 IP (yyy.yyy.yyy.yyy) 与我不在同一个国家,
我想要什么
所以我想写一个 php 代码来回显来自xxx.xxx.xxx.xxx,yyy.yyy.yyy.yyy 的第一个 IP 地址(xxx.xxx.xxx.xxx)
谢谢
编辑
有些人想知道我如何获得$ipaddress的IP地址
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
当我使用http://ip-api.com/检查我的IP地址时,我实际上得到了两个IP地址
xxx.xxx.xxx,yyy.yyy.yyy
【问题讨论】:
-
$ipaddress不是 PHP 程序中默认设置的变量。如果不知道你是如何为它分配一个值的,就无法说明为什么你会得到任何特定的值。 -
我写了一个函数来获取用户IP地址并将其传递给
$ipaddress变量 -
...那么您可能想向我们展示该功能?我们不是在这里猜测。
-
顺便说一句:您的问题的模棱两可已经导致人们给出不同的答案,这取决于他们是回复您的问题主题还是您的描述。保持一致!另外,问问自己是否所有背景都对你的问题是必要的。
-
@MagnusEriksson,我刚刚编辑了问题并添加了它
标签: php api ip-address