Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2009, 00:38   #1
Burturg
 
Регистрация: 09.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 в 09:34.
Burturg вне форума Ответить с цитированием
Старый 09.06.2009, 16:43   #2
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

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

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

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

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

cronfy, спасибо, но мне бы что-нибудь попроще, что бы я мог и сам справиться без специальных знаний, если такая возможность конечно есть.
Burturg вне форума Ответить с цитированием
Старый 10.06.2009, 02: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, 09:30   #5
Burturg
 
Регистрация: 09.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, 14: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, 16:09   #7
Burturg
 
Регистрация: 09.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, 19:29   #8
cronfy
Пользователь
 
Регистрация: 09.10.2008
Сообщений: 92
По умолчанию

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

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

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

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

Последний раз редактировалось cronfy; 12.06.2009 в 17:29.
cronfy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена разрешения 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