Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 08.06.2009, 23:38   #1
Burturg
 
Регистрация: 08.06.2009
Сообщений: 7
По умолчанию Смена рефссылки на сайте?

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

Скрипт мне подсказали и я все уже все прописал у себя на страничке:

Код HTML:
<script>
if(document.referrer=="site1") document.write("ref1");
else if(document.referrer=="site2") document.write("ref2");
else if(document.referrer=="site3") document.write("ref3");
else if(document.referrer=="site4") document.write("ref4");
else if(document.referrer=="site5") document.write("ref5");
else if(document.referrer=="site6") document.write("ref6");
else if(document.referrer=="site7") document.write("ref7");
else document.write("ref8");
</script>
Но возникла небольшая неприятность. На некоторых сайтах мой баннер повесили на многих страницах, а рефссылка меняется только когда заходят с одной, которую я прописал в скрипте, трафик же с других страниц сайта уходит на 8-ую рефссылку.

Можно ли как-то описать в скрипте весь сайт, не описывая каждую страницу отдельно? Может как-то по доменному имени, чтобы отдельные страницы уже не оказывали влияния на работу скрипта?
Форматируйте код! //модератор

Последний раз редактировалось SkyM@n; 09.06.2009 в 08:34.
Burturg вне форума Ответить с цитированием
Старый 09.06.2009, 15:43   #2
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Есть замечательная реализация parseUri, которая поможет выделить host из document.referrer.
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 09.06.2009, 16:01   #3
Burturg
 
Регистрация: 08.06.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от cronfy Посмотреть сообщение
Есть замечательная реализация parseUri, которая поможет выделить host из document.referrer.
я к сожалению и HTML слабова-то знаю, а уж со скриптами, а тем более "реализация parseUri" уж точно голову сломаю.

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

Может вместо document.referrer, можно использовать что-то другое, что и будет выделять этот самый host?

cronfy, спасибо, но мне бы что-нибудь попроще, что бы я мог и сам справиться без специальных знаний, если такая возможность конечно есть.
Burturg вне форума Ответить с цитированием
Старый 10.06.2009, 01:23   #4
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

А всё очень просто!

Вставляем код parseUri к себе на страницу. Добавляем в код парсинг ссылки. И меняем в условии document.referrer на переменную, содержащую хост:

Код:
<script>

// добавляем
parsed = parseUri(document.referrer);

// меняем
if(parsed.host=="site1") document.write("ref1");
else if(parsed.host=="site2") document.write("ref2");
...
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 10.06.2009, 08:30   #5
Burturg
 
Регистрация: 08.06.2009
Сообщений: 7
По умолчанию

cronfy, спасибо буду иметь ввиду.
Но вот немного раньше на другом форуме мне посоветовали такую конструкцию:
Код:
var sites=new Array('site1','site2','site3'), found=false
var refs=new Array('ref1','ref2','ref3')
for(var i=0;i<sites.length;i++)
{
 var ind=document.referrer.indexOf(sites[i])
  if (ind!=-1) {found=true;break}
}
if (found) document.write(refs[i])
 else document.write('ref8')
и я уже все у себя прописал и проверил, вроде все работает хорошо.

Посмотрите, в этой конструкции подводных камней нету? Все будет работать так же хорошо как и в вашем примере?
Burturg вне форума Ответить с цитированием
Старый 10.06.2009, 13:14   #6
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Подводные камни есть, но маловероятно, что вы с ними столкнётесь.

В моём примере из реферера сначала выделяется хост, а потом он сравнивается с вашими сайтами.

В вашем примере в реферере просто ищется строка, соответствующая сайту - в любом месте. И, например, если вы считаете рефереры с сайтов yandex.ru и seo.ru, то ссылка вида

http://www.seo.ru/engines/yandex.ru/shingles.html

посчитается как Яндекс.

Или ещё вот так:

http://www.sunseo.rubricator.com/

посчитается как seo.ru.
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 10.06.2009, 15:09   #7
Burturg
 
Регистрация: 08.06.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от cronfy Посмотреть сообщение
...
Или ещё вот так:

http://www.sunseo.rubricator.com/

посчитается как seo.ru.
Ага, о как все интересно особенно этот второй случай.
Думаю действительно маловероятно, что я с этим столкнусь, но лучше все-таки переделать что бы было на все случаи.
Т.е. если я все правильно понял, то мой код из первого поста и с Вашей помощью примет вид:
Код:
<script>
parsed = parseUri(document.referrer);
if(parsed.host=="site1") document.write("ref1");
else if(parsed.host=="site2") document.write("ref2");
else if(parsed.host=="site3") document.write("ref3");
else if(parsed.host=="site4") document.write("ref4");
else if(parsed.host=="site5") document.write("ref5");
else if(parsed.host=="site6") document.write("ref6");
else if(parsed.host=="site7") document.write("ref7");
else document.write("ref8");
</script>
или этот самый parseUri еще как-то и прописать нужно?

И еще хочу спросить, может Вы знакомы с таким сервисом как "биржа рекламных мест MESTKOM.ru" и как у них все устроено. Если я куплю рекламное место на каком-нибудь сайте через эту биржу, то как в таком случае будет работать скрипт, он будет фиксировать все переходы по моей рекламе как переходы с сайта где размещена моя реклама или же все будет фиксироваться как переходы с MESTKOM.ru, раз уж эта биржа предоставляет такой сервис?
Burturg вне форума Ответить с цитированием
Старый 10.06.2009, 18:29   #8
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Цитата:
или этот самый parseUri еще как-то и прописать нужно?
Да, нужно сразу после тега <script> перед вызовом parseUri() вставить код самой функции со странички http://blog.stevenlevithan.com/archives/parseuri (под заголовком The Code).

Цитата:
И еще хочу спросить, может Вы знакомы с таким сервисом как "биржа рекламных мест MESTKOM.ru" и как у них все устроено.
К сожалению, не в курсе
SPRINTHOST.RU — вот, что я люблю ;-)
cronfy вне форума Ответить с цитированием
Старый 11.06.2009, 23:16   #9
Burturg
 
Регистрация: 08.06.2009
Сообщений: 7
По умолчанию

cronfy, а вот по этой вашей ссылочке для "parseUri", там в конце кода в нескольких строчках красным цветом набор символов прописан. Это что такое и для чего? Мне один к одному их скопировать просто нужно?
Burturg вне форума Ответить с цитированием
Старый 12.06.2009, 15:08   #10
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

Это регулярное выражение. Красный цвет — это просто подсветка синтаксиса. Да, нужно скопировать один к одному.
SPRINTHOST.RU — вот, что я люблю ;-)

Последний раз редактировалось cronfy; 12.06.2009 в 16:29.
cronfy вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена разрешения MIC Общие вопросы Delphi 11 09.02.2009 16:37
Смена фото jakson_sun JavaScript, Ajax 11 15.01.2009 17:51
Смена заголовка Terran Общие вопросы Delphi 3 13.12.2007 01:37


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя