Проверка на конкретный IP адрес?

Ссылка скопирована
1 ответ

День добрый, можно ли как-нибудь организовать проверку на конкретный ip, для дальнейшего вывода определенной информации пользователю. К примеру, есть юзер с айпишником 12.223.72.223, хочу чтобы только конкретно ему выводилась некая инфа на сайте

Дополнительно:

Проверка на конкретный IP адрес?

Вставляем в нужное место записи:

if ($_SERVER['REMOTE_ADDR'] === '12.223.72.223') {     echo 'Detected ip 12.223.72.223!'; }

if ($_SERVER['REMOTE_ADDR'] === '12.223.72.223') { echo 'Detected ip 12.223.72.223!'; }

  • Только не в записи, а в шаблоне или делая из этого шорткод или написав хук в файле функций или используя опасные плагины, позволяющие использовать php в контенте (не уверен что таки сейчас существуют)
  • То что нужно! Спасибо огромное. А как можно чуть изменить эту функцию, чтобы выводилась информация пользователям из конкретной страны, например из Беларуси?
  • jebusSus,

    А как можно чуть изменить эту функцию, чтобы выводилась информация пользователям из конкретной страны, например из Беларуси?

    Или или:
    - Получить массив ip адресов беларуси и сравнивать с ними настоящий ip, затем принять решение о показе контента.
    - Получить ответ от сервиса по определению страны по его ip, гуглить "IP Address Lookup online api", затем принять решение о показе контента.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Елена Вебер Ответ

Проверку на конкретный IP в WordPress сделать можно, но это ненадёжный способ персонализации. У пользователя может меняться IP, он может быть за NAT, VPN, мобильной сетью или прокси. Поэтому IP-проверку лучше использовать только для служебных случаев, а не как серьёзную авторизацию.

Простейший вариант:

$allowed_ip = '12.223.72.223';
$user_ip = $_SERVER['REMOTE_ADDR'] ?? '';
 
if ($user_ip === $allowed_ip) {
    echo 'Специальная информация';
}

$allowed_ip = '12.223.72.223'; $user_ip = $_SERVER['REMOTE_ADDR'] ?? ''; if ($user_ip === $allowed_ip) { echo 'Специальная информация'; }

Если сайт за Cloudflare, прокси или балансировщиком, REMOTE_ADDR может быть IP прокси, а не пользователя. Тогда нужно корректно получать IP из доверенного заголовка. Но нельзя слепо доверять HTTP_X_FORWARDED_FOR, потому что его можно подделать, если сервер напрямую доступен.

Для Cloudflare обычно смотрят HTTP_CF_CONNECTING_IP, но только если запрос действительно пришёл через Cloudflare:

function get_real_ip() {
    if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return sanitize_text_field($_SERVER['HTTP_CF_CONNECTING_IP']);
    }
 
    return sanitize_text_field($_SERVER['REMOTE_ADDR'] ?? '');
}

function get_real_ip() { if (!empty($_SERVER['HTTP_CF_CONNECTING_IP'])) { return sanitize_text_field($_SERVER['HTTP_CF_CONNECTING_IP']); } return sanitize_text_field($_SERVER['REMOTE_ADDR'] ?? ''); }

Если IP несколько, храните список:

$allowed = ['12.223.72.223', '12.223.72.224'];
 
if (in_array(get_real_ip(), $allowed, true)) {
    // показать блок
}

$allowed = ['12.223.72.223', '12.223.72.224']; if (in_array(get_real_ip(), $allowed, true)) { // показать блок }

Для доступа к важным данным лучше использовать пароль, роль пользователя, одноразовую ссылку, личный кабинет или capability. IP подходит для временного показа блока конкретному офису или разработчику, но не для защиты.

Итог: технически проверка делается через IP из запроса, но для безопасности и стабильности лучше привязываться к пользователю/роли, а IP использовать только как дополнительное условие.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно