Массовая проверка показателя «ИКС» от Яндекс   •   Online-инструменты
386 просм
3 комм
Поделиться:

Как получить реальный IP-адрес посетителя сайта, подключенного к Cloudflare на PHP?

Cloudflare – хорошее решение облачной защиты вашего сайта и кэширование информации на нем. Но вот незадача: при попытке получить реальный IP-адрес посетителя на PHP по такому принципу:

$user_ip = $_SERVER["REMOTE_ADDR"];

echo $user_ip;

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

Все дело в том, что Cloudflare при посещении вашего сайта дополнительно посылает несколько заголовков, один из которых - HTTP_CF_CONNECTING_IP, который и содержит в себе реальный IP-адрес посетителя. Мы можем проверить существование этого заголовка, и если он существует – отдавать нам его содержимое, а в противном случае – возвращать данные суперглобального массива $_SERVER.

На практике все это выглядит следующим образом:

if(isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
	
	$user_ip = $_SERVER["HTTP_CF_CONNECTING_IP"];

} else {

	$user_ip = $_SERVER["REMOTE_ADDR"];
	
}

echo $user_ip;

Так, независимо от того, подключен ваш сайт к Cloudflare или нет – вы получите реальный IP-адрес посетителя вашего сайта.

3
комментария
20.03 в 17:49
Напишите пожалуйста подробнее как и куда применить этот код, куда вставить и на что заменить?
  • 1
21.03 в 15:57
Нашел, может кому пригодится. Если у вас DLE на шаред хостинге и соответственно нет доступа к настройкам сервера, можно изменить настройку в php файлах.

functions.inc.php и functions.php
найти
REMOTE_ADDR
заменить на
HTTP_CF_CONNECTING_IP

, теперь работающий сайт через клодфлейр, будет показывать реальные ip пользователей.
  • 1
РОман, спасибо за информацию.
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.
Подняться наверх