Попытка ограничить мой сайт определенной страной

Я пытаюсь ограничить свой сайт определенной страной, используя этот код, который я нашел, и я не могу заставить его работать.

Моя проблема в том, что он всегда возвращает истину, даже когда $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";

}

1

Решение

URL, который вы используете для запроса, возвращает код страны с \n в конце, так что значение, которое вы пытаетесь проверить, находится не внутри вашего массива.
Вы можете использовать отделка Функция для удаления всех пробелов в начале и конце вашей строки, чтобы очистить ее:

$country = trim(file_get_contents("http://ipinfo.io/{$_SERVER['REMOTE_ADDR']}/country"));
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";

}
0

По вопросам рекламы [email protected]