【发布时间】:2016-04-11 20:56:17
【问题描述】:
我正在尝试使用 geoplugin 在 PHP 中获取用户的地理位置和城市。
但是,当我运行此代码时,我收到以下错误:
Notice: unserialize(): Error at offset 0 of 172 bytes in ndex.php on line 21
这是我的全部代码:
$user_ip = getenv('REMOTE_ADDR');
echo $user_ip;
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=".$user_ip.""));
$city = $geo["geoplugin_city"];
$region = $geo["geoplugin_regionName"];
$country = $geo["geoplugin_countryName"];
echo "City: ".$city."<br>";
echo "Region: ".$region."<br>";
echo "Country: ".$country."<br>";
错误中显示的第 21 行是这样的:
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=".$user_ip.""));
我在其他服务器上使用过这段代码并且工作得很好,但是在新服务器上我得到了我不知道为什么的错误。
有人可以就这个问题提出建议吗?
任何帮助将不胜感激。
编辑:
我将代码编辑为以下内容,但仍然出现相同的错误:
$user_ip = getenv('REMOTE_ADDR');
$geo = file_get_contents("http://www.geoplugin.net/php.gp?ip=".$user_ip."");
$string = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $geo);
$geo = unserialize($string);
$city = $geo["geoplugin_city"];
$region = $geo["geoplugin_regionName"];
$country = $geo["geoplugin_countryName"];
echo "City: ".$city."<br>";
echo "Region: ".$region."<br>";
echo "Country: ".$country."<br>";
【问题讨论】:
-
你检查过什么文件获取内容返回?可能是服务器问题
-
您的代码一切正常。我得到了完整的回复:dropbox.com/s/n2xzt01isbpdcn8/…
-
@AndreyMussatov,我做了`var_dump($geo)`,我在页面上得到了这个:
bool(false) -
@CroiOS,我知道,因为我在另一台服务器上使用相同的代码没有任何问题,所以问题出在我认为的服务器上,但我不知道这个问题的原因是什么!
-
考虑使用其他 IP 信息服务,例如:ipinfo.io
标签: php