Перейти к содержимому


Блок "откуда к нам пришли", т.е. список referer-ов


  • Вы не можете ответить в тему
Сообщений в теме: 15

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 June 2012 - 08:56 PM

Это пока заготовка-черновик. Даже не знаю, зачем. Но интересная. Возможно, у меня что-то из нее полезное вылепится, а может у Вас. Велком :).

Блок собирает и показывает URL-ы из $_SERVER['HTTP_REFERER'], т.е. ссылки, по которым люди пришли на сайт.
Переходы с собственного сайта не считаются. В квадратных скобочках стоит количество "приходов" по этой ссылке.
Очевидно, блок этот стоит располагать "снизу", а не "слева" или "справа" (ссылки-то длинные!) и настроить показ только при админском логине, а не всем.

Посмотреть, как оно выглядит можно на http://cpu.badisoft.ru/ - там это блок показывается всем. Заодно и еще одну ссылочку в квадратные скобки добавите :).


1. создаем файл /core/includes/referer.php c содержимым


<?php
db_query("CREATE TABLE IF NOT EXISTS ".DB_PRFX."referer (url VARCHAR(255), num INT DEFAULT 1, UNIQUE KEY url (url)) ENGINE=MYISAM");
if (!empty($_SERVER['HTTP_REFERER']) && !(stripos($_SERVER['HTTP_REFERER'],"http://".$_SERVER['SERVER_NAME']) === 0))
db_query("INSERT INTO ".DB_PRFX."referer
SET url='".mysql_escape_string(iconv('UTF-8','CP1251',urldecode($_SERVER['HTTP_REFERER'])))."'
ON DUPLICATE KEY UPDATE num=num+1");
?>



2. создаем файл /core/tpl/user/[шаблон]/blocks/referer.tpl.html c содержимым


{php}
$data = db_query("SELECT num,url FROM ".DB_PRFX."referer ORDER BY url LIMIT 100");
$site0 = "";
$i = -1;
$result = array();
while( $row = db_fetch_assoc( $data ))
{
preg_match("/^(http:\/\/)?([^\/]+)/i",$row['url'],$site);
if ($site0 <> $site[0])
{
$i++;
$site0 = $site[0];
$result[] = array('num' => $row['num'], 'domain' => $site0, 'urls' => array(array('num' => $row['num'], 'url' => str_replace($site0,'',$row['url']))));
}
else
{
$result[$i]['num'] += $row['num'];
$result[$i]['urls'][] = array('num' => $row['num'], 'url' => str_replace($site0,'',$row['url']));
}
}
rsort($result);
foreach ($result as $key => $res)
{
rsort($res['urls']);
$result[$key]['urls'] = $res['urls'];
}
$this->assign("result", $result);
{/php}

{if $result}
<noindex>
{section name=i loop=$result}
{if $smarty.section.i.index ne 0}<br>{/if}
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left" valign="top" width="100%">
<a rel="nofollow" href="{$result[i].domain}" class="cl12"><b>[{$result[i].num}] {$result[i].domain}</b></a>
</td>
</tr>
{section name=j loop=$result[i].urls}
<tr>
<td>
<a rel="nofollow" href="{$result[i].domain}{$result[i].urls[j].url}" class="cl12">[{$result[i].urls[j].num}] {$result[i].urls[j].url}</a>
</td>
</tr>
{/section}
</table>
{/section}
</noindex>
{else}
<div align="center">No referers</div>
{/if}


и подключаем его в админке в "управление блоками" как "подключить блок из файла"

PS. Использование функции iconv('UTF-8','CP1251',... нужно не всем.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 June 2012 - 11:36 AM

update: добавил noindex/nofollow, заменил <h3> на <b>
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 June 2012 - 04:48 PM

и настроить показ только при админском логине, а не всем.

Вот же я тормоз-то. Так лохануться :).
Ведь PHP-код находится в блоке, т.е. если блок показывать только админу, то только админские рефереры и будут считаться.
Короче, часть того, что находится между {php} и {/php} надо перенести в отдельный (новый) файл core/includes/referer.php и убрать из вышеприведенного блока. Тогда считаться рефереры будут всегда, а показываться там, где разрешен показ блока :).
Чуть позже переделаю в шапке :).

Чуть позже переделаю в шапке :).

Переделал

Я уже писал в теме "Аттракцион неслыханной щедрости", что - цитирую - "C Яндексом все прозрачно, а вот с Гуглем облом - он не передает в referer поисковую фразу либо я ее не там ищу". eugene_wb мне там отвечал, весь тред цитировать не буду. Так вот прошло двое суток и я (да и любой другой - см. cpu.badisoft.ru, в самом низу) вижу ДВА РАЗНЫХ варианта гуглевого реферера - с поисковой фразой (&q=текст-фразы) и без нее. Интересно, как и откуда берутся эти РАЗНЫЕ ВАРИАНТЫ реферера? Ради спортивного интереса набрал в гугле ту же поисковую фразу (из q=смена ip-адреса в виртуальной машине) - получил реферер google.ru/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&sqi=2&ved=0CFYQFjAA&url=http://cpu.badisoft.ru/articles/IP-change-on-server.html&ei=vVTXT-qwAub54QSwuKygAw&usg=AFQjCNGZtHmDgJaiXWa8zb9TJeiwNacyqg&sig2=N6sQN9vmt-po1q1I4AvV1g т.е. не содержащий этой фразы. В отличие от кого-то предыдущего, пришедшего с гугля с этой же фразой :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 12 June 2012 - 04:50 PM

Ну у гугла ж куча вариантов поиска. Может фраза в кавычках набрана была, может "мне повезет", в аккаунте, без аккаунта и т.д. и т.п.
  • 0

#5 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 12 June 2012 - 05:03 PM

вобщем все намного проще, q передается только у незалогиненных пользователей

However, note that Google has now stopped sending the query string in their referrer for all logged in users. So your functionality will work only for users who are logged out of Google . Here is more information on this http://googleblog.bl...ore-secure.html
  • 1
Изображение Изображение Изображение

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 June 2012 - 12:33 AM

Изменил вывод рефереров (см. http://cpu.badisoft.ru/) - отсортировал по сайтам "откуда пришли" и вывел отдельно имена сайтов, отдельно остальной url.
ИМХО, так симпатичнее.

PS. Пожалуй, надо еще IP-адрес входящего учитывать, чтобы не дублировать одинаковый запрос с одинакового IP.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 22 June 2012 - 07:25 PM

1. Исправил мелкие ошибки (наверняка не все) :)
2. Добавил кнопочку [Delete] перед URL, если мы под админским логином (как в "Обсуждениях" товара), чтобы удалять явно левые рефереры.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 zrom

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 69 сообщений
Репутация: 16
Начинающий

Отправлено 24 June 2012 - 12:09 AM

хорошая инфа, но не для паблика...потом урлы сайтов с такими блоками попадают к добрым людям, которые подменяют реферер и делают очень удобно ссылку на свой сайт :) а еще если добрые люди раскруткой занимаются, ждите ..уеву тучу "левых" рефов
  • 0

#9 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 June 2012 - 12:15 AM

хорошая инфа, но не для паблика...

Так никто в паблик выкладывать не заставляет. На рабочем сайте (не на тестовом) этот блок показывается только при админском логине, это настраивается в "Управление блоками".

а еще если добрые люди раскруткой занимаются, ждите ..уеву тучу "левых" рефов

И какой от них толк, если стоит noindex/nofollow? :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#10 zrom

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 69 сообщений
Репутация: 16
Начинающий

Отправлено 24 June 2012 - 12:49 AM

ноуиндекс тут значения не имеет, всеравно ссылку поисковик бы сьел без анкора, правда с ноуфоллоу у нее не будет веса, но в любом случае, есть люди предлагающие прогоны рефами по кол. сайтов чем-то напоминающее прогоны хрумом (1млн сайтов..2..4) я не думаю что они сильно перебирают сайты, стоит noindex/nofollow или нет, главное что есть такой блок.. и сложно потом следить будет, кто, откуда и каким образом пришел))
  • 0

#11 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 July 2012 - 10:16 PM

update:
Присандалил к списку рефереров фишку "Свернуть/Развернуть", как в фильтре. Но состояние не сохраняется и всегда изначально свернуто, чтобы не мешало.

PS. Пожалуй, надо приделать фильтр, чтобы сохранялись только рефереры с сайтов из списка. Хотя тоже от лукавого - а ну как сайт особо интересен, а я не знаю? Я вот про Нигму знать не знал, пока оно в реферерах не оказалось.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#12 Salp

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 09 May 2013 - 11:15 AM

Очистку таблицы неплохо бы сделать.
  • 0

#13 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 19 January 2015 - 10:39 AM

1. создаем файл /core/includes/referer.php c содержимым...

Я так понял, после первого запуска и создания таблицы в БД этот файл можно изъять из папки /core/includes ?
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#14 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 January 2015 - 11:55 AM

Я так понял, после первого запуска и создания таблицы в БД этот файл можно изъять из папки /core/includes ?

Нет. Кроме стартового создания таблицы в нем же производится занесение рефереров в таблицу и удаление из нее.
Можно после первого же запуска удалить строку создания таблицы, т.к. она, действительно, больше не нужна.

Но я бы не стал сейчас пользоваться этим модулем.
Причин, как минимум, три:
1. Яндекс и гугль давно уже не выдают в реферере информацию в чистом виде. Возможно, остальные поисковики тоже. Т.е. часть информации "откуда к нам пришли" (точнее, с каким запросом к нам пришли) мы теряем. Чуть ли не самую важную часть.
2. Модуль написан так, что в любом случае на страницу грузится ВЕСЬ список рефереров. Упорядоченный и отсортированный, но весь. Уже через пару месяцев он был довольно объемный даже на моем тестовом сайте. Т.е. ставить этот блок "показывать для всех" не стоит, лучше "только для админов".
3. Также не стоит ставить "для всех", т.к. SEO-боты начали использовать поле реферера для пихания туда не реального, а продвигаемого адреса, чтобы поисковик наткнулся на него в тексте страницы.

Короче, полезность этого модуля мне кажется весьма сомнительной.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#15 FusSheva

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 210 сообщений
Репутация: 7
Начинающий

Отправлено 19 January 2015 - 01:04 PM

Я на пробу и поставил (для админа) посмотреть. Но пока что наблюдаю только No referers
:)
  • 0
Каждый человек способен на многое. Но к сожалению, не каждый знает на что он способен.

#16 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 January 2015 - 01:40 PM

Я на пробу и поставил (для админа) посмотреть. Но пока что наблюдаю только No referers :)

Ну так напишите, например, на этом форуме себе в личку письмо со ссылкой на свой сайт. И зайдите на него по ссылке :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)