| g.galashev | 
					 | 
			
|---|---|
| 
					 Здраствуйте. У меня на сайте есть форма обратной связи, отсылается методом Post. Хотелось бы реализовать, чтобы ещё отсылался URL, с которого пользователь зашёл на мой сайт. Как это можно реализовать в Cotonti?  | 
			
| Edward | 
					 | 
			
|---|---|
| 
					 Привет! 
	По моему проще установить какую-либо систему web-аналитики. На выбор: Google Analytics или Яндекс Метрика Email: ed.gabishev@gmail.com 
					Telegram: https://t.me/Ed_Gaba  | 
			
| Trustmaster | 
					 | 
			
|---|---|
					
<input type="hidden" name="referer" value="{PHP._SERVER.HTTP_REFERER}" />
Это сработает лишь в том случае, если человек попал непосредственно на форму обратной связи с другого сайта. В противном случае нужно то, что описал Edward. May the Source be with you! 
					 | 
			
| g.galashev | 
					 | 
			
|---|---|
| 
					 Мне мало понять, откуда человек попал на форму обратной связи, мне нужно отследить по какому объявлению он зашёл и отправил данные с формы. Я так понимаю яндекс-метрика только отслеживает посещение определнной страницы, а не отправку формы со страницы. Added 3 minutes later: А нельзя ли PHP._SERVER.HTTP_REFERER где-то сохранить при посещении первой страницы сайта, чтобы потом при отправки формы использовать? Вроде обычное программирование, но как реализовать, понять не могу.  | 
			
| Moool13 | 
					 | 
			
|---|---|
| 
					 
	g.galashev, поддерживаю, меня тоже интересует этот вопрос, помимо  Добавлено 1 минуты спустя: 
 Теоретически можно в БД сохранять по ip (если гость, по id если юзер, но думаю про юзера не актуально в твоем случае), т.е. написать отдельный плагин.  | 
			
| Sergey | 
					 | 
			
|---|---|
| 
					 http://bbclone.de/ у нас и плагин был для него в свое время. www.cotonti.mobi 
					 | 
			
| Macik | 
					 | 
			
|---|---|
					
 Сохранять конечно можно. Например в 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 Відредаговано: Macik (27.10.2012 19:47, 13 років тому)  | 
			
| Dayver | 
					 | 
			
|---|---|
| 
					 Решал недавно эту задачу .... решение на пхп в пару строк по принцыпу описанному Macik - проверяем PHP._SERVER.HTTP_REFERER и если он не принадлежит нашему сайту и не пуст то записываем в сессию (что бы не возится с куками и упаси бог писать в базу - для нагруженных сайтов ради такой мелочи лишние запросы), а дальше читаем из сессии и отправляем вместе с мылом .... тот же финт ушами делается при заказе в интемаге - отслеживаем полезные запросы(когда человек действительно что то купил а не просто зашел на сайт) из поисковиков и реф ссылки с каталогов
 
						Pavlo Tkachenko aka Dayver 
					 | 
			
| g.galashev | 
					 | 
			
|---|---|
| 
					 Самое интересное решение мне показалось у Dayver. Dayver, а нельзя ли с кодом это решение посмотреть?  | 
			
| Dayver | 
					 | 
			
|---|---|
| 
					 Ну например можно мини плуг сделать или встроить в плагин обратной связи. У меня реферер пишется в базу потому мои две строчки реализации сего функционала выглядят так: 
						Первая строка должна вызыватся при попадании пользователя на любую страницу сайта (для этого подходят хуки типа 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 | 
					 | 
			
|---|---|
| 
					 изящно, спасибо! Added 1 days later: А будет ли это работать, если много пользователей на сайте одновременно? Ведь переменная $_SESSION['ref'] у нас одна. Відредаговано: g.galashev (30.10.2012 19:15, 13 років тому)  | 
			
| Dayver | 
					 | 
			
|---|---|
| 
					 Будет работать. Сессии в PHP Pavlo Tkachenko aka Dayver 
					 | 
			
| g.galashev | 
					 | 
			
|---|---|
| 
					 написал прямо в файл 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 минуты спустя: Я в таких случаях просто открываю другой браузер (например работаю в хроме то для проверки открою в опере) и захожу на сайт через поиск гугла - далее провожу пробный заказ(отправку фидбек сообщения) и в итоге наблюдаю в базе рефку с гугла Pavlo Tkachenko aka Dayver 
					Відредаговано: Dayver (30.10.2012 20:36, 13 років тому)  | 
			
| g.galashev | 
					 | 
			
|---|---|
| 
					 Только что включил комп и перешёл на свой сайт с этого сайта, результат - пустота. Где-то прокол. Может нельзя прямо в common.php пихать код? Или здесь ошибка? Или я что-то где-то не объявил? 
 Added 3 hours later: Или здесь ошибка: $memb_ref = (isset($_SESSION['ref']) && !empty($_SESSION['ref'])); Відредаговано: g.galashev (31.10.2012 18:36, 13 років тому)  |