Реальный Ай Пи клиента

rafaello

Новичок
Здравствуйте!
Встал вопрос определения Ай Пи адреса клиента, открывшего письмо из емайл-рассылки.
Известно, что для этого скрипт рассыльщика вставляет картинку 1х1 пикс. вниз письма. Так вот...
Оригинал файла open.php содержал такое:
PHP:
$ip = $_SERVER['REMOTE_ADDR'];
Однако в статистике данный код отдавал 127.0.0.1 абсолютно от всех (разных) клиентов. После этого я переделал код следующим образом:
PHP:
if (!empty($_SERVER["HTTP_X_REAL_IP"])){
        $ip = $_SERVER["HTTP_X_REAL_IP"];}
        else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
        $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];}
        else{
        $ip = $_SERVER["REMOTE_ADDR"];}
В этом случае Ай Пи отдавался правильно, но только лишь в том случае, если ссылка на картинку была прямая, то есть такого вида
HTML:
http://9zaafokb.mysite.ru/open.php?lr=mb&M=59589&L=10&N=18121&F=H&image=.jpg
Однако здесь выскочил еще один банан.
Дело в том, что почтовые провайдеры, как то майл.ру, яндекс заменяют ссылки в письмах и в конечном виде ссылка на картинку имеет такой вид:
HTML:
https://resize.yandex.net/mailservice?url=http://9zaafokb.mysite.ru/open.php?lr=mb&M=59589&L=10&N=18121&F=H&image=.jpg
или
HTML:
https://[email protected]&e=1598434465&flags=0&h=o3kPqtWdnWm4RrbXsauQRg&url173=ajJtNXV1eTYuYWxnYXBsdXMyLnJ1L29wZW4ucGhwP2xyPW1iJk09ODM5NDgyNSZMPTEwJk49MTgwNDImRj1IJmltYWdlPS5qcGc~&is_https=0
Теперь в статистике в 90% случаев отображается не реальный Ай Пи клиента, а Ай Пи сервера почтовика (майл.ру или яндекса), проверял несколько раз.

Вопрос. Как правильно прописать код в open.php, чтобы получить реальный Ай Пи клиента, открывшего письмо, а не почтовика?
 

Фанат

oncle terrible
Команда форума
1. выкинуть эту шаманскую абракадабру, посмотреть настройках своего веб-сервера, в какой НТТР заголовок он кладёт реальный айпи, и брать строго из него.
2. Расслабиться и не пытаться следить за клиентами. Факта открытия письма более чем достаточно
 

rafaello

Новичок
Мне необходимо сделать сегментацию по ГеоАйПи и добавить в базу город(регион, страну) моих подписчиков.
Товарищ Фанат, уточните пожалуйста, где именно копать, чтобы найти то, что вы пишите в пункте 1 ?
 

Фанат

oncle terrible
Команда форума
скорее всего в настройках niginx-а
но вообще зависит от конфигурации сервера
то, что в REMOTE_ADDR отдается 127.0.0.1, означает что на сервере стоят какие-то криво настроенные прокси
и спрашивать надо не у постороннего тов. фаната, а у того, кто эти прокси настраивал

Сегментация делается при подписке, а не при открытии
 

fixxxer

К.О.
Партнер клуба
1) Скорее всего, схема вида nginx + apache+mod_php на локалхосте. Соответственно, во-первых, смотреть proxy_set_header в nginx, а во-вторых настроить Apache нормально, чтобы он сам клал реальный IP в REMOTE_ADDR, а не заниматься извращениями.

2) "почтовые провайдеры, как то майл.ру, яндекс заменяют ссылки в письмах и в конечном виде ссылка на картинку имеет такой вид" - очевидно, что это прокси, в этом случае ответ, разумеется, никак. Специально так сделано, чтобы всякие слишком умные не следили за их пользователями.

Мне необходимо сделать сегментацию по ГеоАйПи и добавить в базу город(регион, страну) моих подписчиков.
Если пользователь подписывался на сайте, то в тот момент, когда подписывался, и определить его регион, уточнять при необходмости по ссылке, по которой он пройдет из емейла.
А если это базы емейлов, полученные без прямого согласия пользователей, то есть спам, то пройтись вместе со всеми спамерами в известном направлении.
 

rafaello

Новичок
Спасибо, друзья!
Уже есть пища для размышления.
........
Никакого спама!!! Просто у меня есть часть подписчиков, у которых Ай Пи в базе обозначен как 127.0.0.1 И чтобы заново их не беспокоить переподпиской я решил использовать факт открытия для сегментации...
 

rafaello

Новичок
что бы я без вас делал...!! Спасибо, помогло.
Настроил как написано здесь
Теперь $_SERVER['REMOTE_ADDR'] отображает реальный Ай Пи адрес.
Однако по прежнему, редиректные ссылки почтовиков
....
....
пишут в статистику Ай Пи московские, то есть ихние, а не реального клиента.
Интересно, почему так? Ведь в файле open.php четко прописано
PHP:
$ip = $_SERVER['REMOTE_ADDR'];
Каким то образом $_SERVER['REMOTE_ADDR'] изменяет свои значения.....
 

Фанат

oncle terrible
Команда форума
потому что это две разные, никак не связанные между собой проблемы
получение айпи адреса в принципе
и получение адреса по ссылке из письма

то, что ты настроил нормально первое, никак не решит проблему второго.
про второе тебе сказали уже - это невозможно
 
Сверху