Я пытаюсь ограничить свой сайт определенной страной, используя этот код, который я нашел, и я не могу заставить его работать.
Моя проблема в том, что он всегда возвращает истину, даже когда $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";
}
URL, который вы используете для запроса, возвращает код страны с \n
в конце, так что значение, которое вы пытаетесь проверить, находится не внутри вашего массива.
Вы можете использовать отделка Функция для удаления всех пробелов в начале и конце вашей строки, чтобы очистить ее:
$country = trim(file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country"));
Чтобы убедиться, что в коде страны нет лишних символов, замените код следующим:
$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";
}