Как сделать лучший счетчик рефереров

  • Автор темы hopeh2000
  • 28
  • Обновлено
  • 18, May 2024
  • #1
Привет всем, я надеюсь, что задам свой вопрос здесь по адресу. В результате мне нужно что-то вроде этого: Referer_short|inc_24|inc_month|inc_all|joindate В качестве временной таблицы я думаю о чем-то вроде: реферер|ip|дата и время

Теперь я хотел бы сохранить первое и/или второе касание любого посетителя в моих xenforo xf1 и xf2. Первое касание означает первую страницу, второе касание — вторую страницу, нажатую на первой.

short_ref и ref означают, что кто-то может ссылаться на меня более чем на одну страницу с lala.com/page1.html и lala.com/page2.html, но оба клика происходят с (короткого) lala.com.

Я уверен, что в xenforo для этого есть некоторые необходимые функции, в любом случае я могу сделать это как-нибудь самостоятельно.

Но как лучше всего сохранить данные? стоит ли мне обновить это temp_id|referer|ip|datetime|count, если datetime прошло > 60 минут назад

или мне просто сохранить

Referer|ip|datetime и используйте cronjob каждые 24 часа.

или, может быть, когда в таблице есть {x} строк (также возможно с помощью rand() очищать таблицу каждые 1/{x} раз.

Я думал о внешнем регистраторе, но те, что я нашел, настолько старые, что

что у них нет PDO.

(нравиться http://rkrt.redkernel-softwares.com/

например)

Я думал о тяжелом оружии типа пиквика/последователя, но не только по этой причине.

Я думал о получении данных из skynet/google.

Может быть, кто-нибудь будет так любезен и поможет мне наилучшим образом?

Моя цель, как написано, узнать, какие рефереры (URL-адреса) отправили сколько пользователей за последние 24 часа, в то время как я не хочу считать пользователя дважды за 60 минут.

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

Но я не хочу их постоянно проверять? На другом сайте у нас есть как минимум две таблицы для сохранения «данных сессии»; так что, может быть, в любом случае есть то, что мне нужно, или может быть еще одно поле в таблице? Спасибо за совет.

hopeh2000


Рег
21 Aug, 2012

Тем
1

Постов
5

Баллов
15
  • 21, May 2024
  • #2
Да, это ясно.

Спасибо.

Но: как использовать для этого классы xenforo? (xf1);

и как его лучше сохранить?

Пример: некоторые дополнения подсчитывают ресурсы из диспетчера ресурсов; самый простой способ — сохранить только идентификатор со страницы; затем суммируйте его через некоторое время (я изменил это на rand()) и очистите таблицу.

Должен ли я считать так (вставить плюс сумму плюс сохранить во второй таблице плюс пустую первую таблицу) или с обновлением одной строки? Может быть, это просто не имеет значения?

Еще раз мой вопрос:

1) Какие классы/методы из xf1 можно использовать?

2) Как следует хранить данные?

XF1 подсчитывает сеанс каждого посетителя; так что данные в любом случае здесь.

Но мне нужен первый удар и второй; а также реферер.
 

Nordvik


Рег
27 Jun, 2014

Тем
0

Постов
1

Баллов
1
  • 03, Jun 2024
  • #3
Насколько я понял,

Вы хотите отслеживать посетителей, пришедших с внешних веб-сайтов.

Вы также хотите отслеживать только тех посетителей, которые также перешли на вторую страницу.

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

Самый простой способ — установить файл cookie, как только посетитель заходит на ваш сайт, если файл cookie еще не установлен.

Сохраните URL-адрес реферального веб-сайта в этом файле cookie.

срок действия файла cookie истекает через час

Теперь в PHP-коде:

$referer= $_SERVER["HTTP_REFERER"];

$referer= взорваться('/', $referer);

$referer= $referer[2];

//теперь в переменной находится только доменное имя реферера

//убедимся, что это не ваш домен

$me= $_SERVER["HTTP_HOST"];

$me= взорваться('/', $me);

$me= $me[2];

if( (!isset($_COOKIE["r"])) & & $me!=$referer ){

setcookie("r", $referer, time()+(3600), "/");

}

if( isset( $_COOKIE["r"]) & & $_COOKIE["r"]!="" ){

// регистрируем URL в вашей базе данных, значение находится в $_COOKIE["r"]

//затем очищаем этот файл cookie.

Не удалять, а просто очистить setcookie( "r", "", time()+(3600), "/" ); } Здесь происходят две вещи. 1. Ваш код проверяет, установлен ли файл cookie.

Если нет, то он устанавливает один.

Поскольку файл cookie не может быть прочитан на той же странице, где он установлен, Touch1 не передает файл cookie, поскольку сам Touch1 устанавливает файл cookie.

поэтому ничего не записывается в базу данных.

2. Touch2 успешно считывает файл cookie, записывает URL-адрес ссылки в базу данных, а затем устанавливает тот же файл cookie в качестве пустого файла cookie.

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

Файл cookie остается пустым в течение часа, поэтому в течение еще одного часа с тем же пользователем ничего не происходит.

Через час устанавливается новый файл cookie с новым реферером, если он существует, поэтому те же проверки повторяются.
 

grosh1


Рег
08 May, 2013

Тем
0

Постов
3

Баллов
3
  • 07, Jun 2024
  • #4
Если вы будете зависеть от базы данных при выполнении проверок, время загрузки вашей страницы сильно пострадает, особенно если таблица станет большой. Вот почему используйте файлы cookie и код PHP для выполнения проверок и регистрируйтесь в базе данных только в том случае, если необходимо сохранить что-то новое.
 

Inv1


Рег
11 Apr, 2013

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно