Forums / National / Russian / Тех. поддержка / Откуда пришёл пользователь

12>>>

g.galashev
#1 2012-10-27 13:21

Здраствуйте.

У меня на сайте есть форма обратной связи, отсылается методом Post. Хотелось бы реализовать, чтобы ещё отсылался URL, с которого пользователь зашёл на мой сайт. Как это можно реализовать в Cotonti?

Edward
#2 2012-10-27 15:58

Привет!

По моему проще установить какую-либо систему web-аналитики. На выбор: Google Analytics или Яндекс Метрика
Если это еще не сделано конечно.
Стандартного способа отправлять откуда пришел пользователь через форму обратной связи нет, или я плохо смотрел.
Варианта 2: писать в cookies с помощью движка (нужен хак), либо доработать плагин Who's online.

Email: ed.gabishev@gmail.com
Telegram: https://t.me/Ed_Gaba
Trustmaster
#3 2012-10-27 16:35
<input type="hidden" name="referer" value="{PHP._SERVER.HTTP_REFERER}" />

Это сработает лишь в том случае, если человек попал непосредственно на форму обратной связи с другого сайта. В противном случае нужно то, что описал Edward.

May the Source be with you!
g.galashev
#4 2012-10-27 16:41

Мне мало понять, откуда человек попал на форму обратной связи, мне нужно отследить по какому объявлению он зашёл и отправил данные с формы. Я так понимаю яндекс-метрика только отслеживает посещение определнной страницы, а не отправку формы со страницы.

Added 3 minutes later:

А нельзя ли PHP._SERVER.HTTP_REFERER где-то сохранить при посещении первой страницы сайта, чтобы потом при отправки формы использовать? Вроде обычное программирование, но как реализовать, понять не могу.

Moool13
#5 2012-10-27 16:45

g.galashev, поддерживаю, меня тоже интересует этот вопрос, помимо HTTP_REFERER

Добавлено 1 минуты спустя:

А нельзя ли PHP._SERVER.HTTP_REFERER где-то сохранить при посещении первой страницы сайта, чтобы потом при отправки формы использовать? Вроде обычное программирование, но как реализовать, понять не могу.

Теоретически можно в БД сохранять по ip (если гость, по id если юзер, но думаю про юзера не актуально в твоем случае), т.е. написать отдельный плагин.

Sergey
#6 2012-10-27 17:29

http://bbclone.de/  у нас и плагин был для него в свое время.

www.cotonti.mobi
Macik
#7 2012-10-27 19:39

Added 3 minutes later:

А нельзя ли PHP._SERVER.HTTP_REFERER где-то сохранить при посещении первой страницы сайта, чтобы потом при отправки формы использовать? Вроде обычное программирование, но как реализовать, понять не могу.

Сохранять конечно можно. Например в Cookie. Вот такой скрипт прописывем например в footer.tpl:

	user_ref = '{PHP._SERVER.HTTP_REFERER}',
	this_host = '{PHP._SERVER.HTTP_HOST}',
	get_host = new RegExp("\/\/([^\/]+)"),
	ref = get_host.exec(user_ref );
	var ref_host = (ref && typeof(ref) == 'object') ? ref[1] : null;
	if (ref_host && ref_host != this_host ) {
		cookie.set('cot_ref',user_ref);
	}

Как только пользователь попадает на любую страницу - проверяем пришел ли он со стороннего ресурса и (если да) сохраняем referrer в куку «cot_ref».

Ну а далее можно использовать как хочешь. Например отсылать в форме.

Добавлено 8 минуты спустя:

Забыл - надо будет подключить какой-либо JS скрипт для работы с куками. Например этот https://github.com/js-coder/cookie.js

Просто вставить в header строку: <script type="text/javascript" src="./js/cookie.min.js"></script>  (2Кб)

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F
This post was edited by Macik (2012-10-27 19:47, 11 years ago)
Dayver
#8 2012-10-27 20:04
Решал недавно эту задачу .... решение на пхп в пару строк по принцыпу описанному Macik - проверяем PHP._SERVER.HTTP_REFERER и если он не принадлежит нашему сайту и не пуст то записываем в сессию (что бы не возится с куками и упаси бог писать в базу - для нагруженных сайтов ради такой мелочи лишние запросы), а дальше читаем из сессии и отправляем вместе с мылом .... тот же финт ушами делается при заказе в интемаге - отслеживаем полезные запросы(когда человек действительно что то купил а не просто зашел на сайт) из поисковиков и реф ссылки с каталогов
Pavlo Tkachenko aka Dayver
g.galashev
#9 2012-10-28 08:43

Самое интересное решение мне показалось у Dayver.

Dayver, а нельзя ли с кодом это решение посмотреть?

Dayver
#10 2012-10-28 17:08
Ну например можно мини плуг сделать или встроить в плагин обратной связи. У меня реферер пишется в базу потому мои две строчки реализации сего функционала выглядят так:

Первая строка должна вызыватся при попадании пользователя на любую страницу сайта (для этого подходят хуки типа global или например у меня header.tags)

if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && strripos($_SERVER['HTTP_REFERER'], 'мойсайт.com.ua') === false) $_SESSION['ref'] = $_SERVER['HTTP_REFERER'];

Вторая строка располагается в файле который отсылает ваш емейл (у меня это файл который пишет инфо о заказе в базу).

$memb_ref = (isset($_SESSION['ref']) && !empty($_SESSION['ref'])) ? $db->prep($_SESSION['ref']) : '';


Вот и все
Pavlo Tkachenko aka Dayver
g.galashev
#11 2012-10-29 16:51

изящно, спасибо!

Added 1 days later:

А будет ли это работать, если много пользователей на сайте одновременно? Ведь переменная $_SESSION['ref'] у нас одна.

This post was edited by g.galashev (2012-10-30 19:15, 11 years ago)
Dayver
#12 2012-10-30 20:05

Будет работать. Сессии в PHP

Pavlo Tkachenko aka Dayver
g.galashev
#13 2012-10-30 20:18

написал прямо в файл common.php  сразу после session_start():

if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && strripos($_SERVER['HTTP_REFERER'], 'buropp.ru') === false) $_SESSION['ref'] = $_SERVER['HTTP_REFERER'];

 

затем в плагин, отправляющий сообщение:

$memb_ref = (isset($_SESSION['ref']) && !empty($_SESSION['ref']));

и потом включил переменную $memb_ref  в отправку в теле письма, но почему-то на почту пришло пустое сообщение, без url. Какие могут быть причины? Может я накосячил?

Dayver
#14 2012-10-30 20:20

Надо перейти с гугла например - тоесть добится заведения новой сессии - а если у вас был открыт сайт в браузере то в рефах будет ваш сайт а значит в сессию попадет пустота ибо свой сайт мы тудане пишем

Добавлено 14 минуты спустя:

Я в таких случаях просто открываю другой браузер (например работаю в хроме то для проверки открою в опере) и захожу на сайт через поиск гугла - далее провожу пробный заказ(отправку фидбек сообщения) и в итоге наблюдаю в базе рефку с гугла

Pavlo Tkachenko aka Dayver
This post was edited by Dayver (2012-10-30 20:36, 11 years ago)
g.galashev
#15 2012-10-31 15:31

Только что включил комп и перешёл на свой сайт с этого сайта, результат - пустота. Где-то прокол. Может нельзя прямо в common.php пихать код? Или здесь ошибка? Или я что-то где-то не объявил?

 

Added 3 hours later:

Или здесь ошибка: $memb_ref = (isset($_SESSION['ref']) && !empty($_SESSION['ref']));

This post was edited by g.galashev (2012-10-31 18:36, 11 years ago)

12>>>