我正在尝试使用我找到的代码将我的网站限制到特定国家/地区,但我似乎无法让它运行。
我的问题是,即使$country
与数组中的内容不同,它也始终返回
我知道通过GeoIP限制我的网站并不是傻瓜式的证明,但是由于我们托管的活动仅限于一个较小的地理区域,因此我的问题会让那些尝试从不同国家注册的人失望。
我检查过我的问题是否与缓存有关,而我的网站没有缓存输出。
我也知道$country
正在努力echo ($country);
这是代码
$allowed_countries = array("CA", "US");
$country = file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country");
if (in_array($country, $allowed_countries)) {
header('Location: http://www.letsgetsocialclub.com/site');
} else {
echo "Sorry The Let's Get Social Club is not available in your country";
}
答案 0 :(得分:0)
您用于请求的网址会在最后返回带有\n
的国家/地区代码,因此您尝试检查的值不在您的数组中。
您可以使用trim函数从字符串的开头和结尾删除所有空格以清除它:
$country = trim(file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country"));
答案 1 :(得分:0)
要确保国家/地区代码中没有多余字符,请使用以下代码替换您的代码:
$allowed_countries = array("CA", "US");
$country = preg_replace('/[^A-Z]/', '', file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country"));
if (in_array($country, $allowed_countries)) {
header('Location: http://www.letsgetsocialclub.com/site');
} else {
echo "Sorry The Let's Get Social Club is not available in your country";
}