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, 12 років тому) |
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, 12 років тому) |
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, 12 років тому) |
g.galashev |
|
---|---|
Только что включил комп и перешёл на свой сайт с этого сайта, результат - пустота. Где-то прокол. Может нельзя прямо в common.php пихать код? Или здесь ошибка? Или я что-то где-то не объявил?
Added 3 hours later: Или здесь ошибка: $memb_ref = (isset($_SESSION['ref']) && !empty($_SESSION['ref'])); |
|
Відредаговано: g.galashev (31.10.2012 18:36, 12 років тому) |