Как отследить источник редиректа?

12
wilelf
На сайте с 27.06.2005
Offline
322
2105

Всех с Новым Годом!

Задачка такая:

1. Есть несколько доменов

2. Каждый из них автоматически редиректит посетителя на основной

3. Вопрос: как отследить сколько человек с каких из них попадает на основной?

Агентство контекстной рекламы НеВсем ( https://www.nevsem.ru/ ) Пишу платно статьи для Хабра. Мой профиль ( https://habr.com/ru/users/wilelf/ )
ewg777
На сайте с 04.06.2007
Offline
225
#1

Если домены Ваши, то можно контролировать с помощью HTTP referer. Если сторонние, то достоверно определить невсегда можно.

RO
На сайте с 13.07.2009
Offline
88
#2

пишешь в куку например имя домена до того как редиректишь, а на основном уже проверяешь.

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

wilelf
На сайте с 27.06.2005
Offline
322
#3
ewg777:
Если домены Ваши, то можно контролировать с помощью HTTP referer. Если сторонние, то достоверно определить невсегда можно.

Может ли это делать LiveInternet? Если да, то как?

RO
На сайте с 13.07.2009
Offline
88
#4
wilelf:
Может ли это делать LiveInternet? Если да, то как?

причем тут ли? :))) все делается так:

$site=$_SERVER['SERVER_NAME']; //доменное имя

setcookie ("referer", $site); // пишем в куку имя домена
header('location: http://site.com'); // редирект на основной домен
die;

----------------
часть кода для проверки откудова пришел юзер
----------------

if(isset($_COOKIE['referer']))
{
$_COOKIE['referer']=$ref;
switch($ref)
{
case 'site_1.ru':
// пишем в бд имя первого сайта
break;
case 'site_2.ru':
// пишем в бд имя второго сайта
break;
}
}


както так, не проверял на работоспособность ибо нет доступа к хосту
ewg777
На сайте с 04.06.2007
Offline
225
#5
RedOK:
причем тут ли? :))) все делается так:

$site=$_SERVER['SERVER_NAME']; //доменное имя
setcookie ("referer", $site); // пишем в куку имя домена
header('location: http://site.com'); // редирект на основной домен
die;

----------------
часть кода для проверки откудова пришел юзер
----------------

if(isset($_COOKIE['referer']))
{
$_COOKIE['referer']=$ref;
switch($ref)
{
case 'site_1.ru':
// пишем в бд имя первого сайта
break;
case 'site_2.ru':
// пишем в бд имя второго сайта
break;
}
}


както так, не проверял на работоспособность ибо нет доступа к хосту

Неочень.

$sites = array('site.ru', 'site2.ru');
$ref = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);

if (in_array($ref, $sites)) {
пишим в бд
}
RO
На сайте с 13.07.2009
Offline
88
#6
Неочень.
PHP код:
$sites = array('site.ru', 'site2.ru');
$ref = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);

if (in_array($ref, $sites)) {
пишим в бд
}

неочень твой код, ибо при header('location:...') реферер не передается :)

ewg777
На сайте с 04.06.2007
Offline
225
#7
RedOK:
неочень твой код, ибо при header('location:...') реферер не передается :)
$_COOKIE['referer']=$ref;

Это лучше?

Тогда слать нужно.

header("Referer: http://www.set-adress.com");
header("Location: http://www.new-location.com");

А если так слать, то любые счётчики справяться, тот же LiveInternet.

RO
На сайте с 13.07.2009
Offline
88
#8

header("Referer: http://www.set-adress.com");
впервые вижу такие заголовки, ты ничего не плутаешь?
ewg777
На сайте с 04.06.2007
Offline
225
#9
RedOK:
header("Referer: http://www.set-adress.com");
впервые вижу такие заголовки, ты ничего не плутаешь?

http://bugs.php.net/bug.php?id=27041

Увы, но это браузерный заголовок и php его не отправит.

RO
На сайте с 13.07.2009
Offline
88
#10

кхм... может я слепой... ткни меня в то место на этих ссылках где явно написано что реферер можно послать при помощи header()

...
Only the browser can send that header...

это ничего тебе не говорит?

да да пых может его отправить ток курлом или сокетами.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий