Вы сейчас здесь
«Облако» тэгов
link, small, tagless, tiny, 2003, big, 2008, 2010, январь, декабрь, сентябрь, 2001, 2004, 2002, август, март, апрель, июль, 2009, игры, октябрь, май, июнь, февраль, 2007, ноябрь, img, 2011, quote, wow, huge, блоги, кино, игровой дизайн, ребенок, половой вопрос, технологии, lytdybr, вебдев, фразы, живой журнал, жизнь, яндекс, язык, php, людишки, 2006, 2005, software, поисковики, video, inglish, 2000, смишно, диалоги, музыка, книги, культ личности, политика, дейтинг, интернет, 1999, rss, контент, flash, реклама, я, авторские проекты, next-gen mmo, прон, ореховые скорлупки, сми, 2012, js, программирование, fight club, register, социгры, спам, english reviews, iphone, потребление, американас, идеи, беллетристика, мое величие, usability, пидорасты, battle.net, lifestyle, starcraft 2, Тёма, соционика, spectator.ru, британские ученые, развитие, Масква, фото, бабло, литература, mobile, work, болкман, титаны, hard, hobius, mysql, интеллектуальный юмор, хостинг, blogowar.ru, графика, SEO, blogowar, magic, журналистика, злоба дня, религия, стартапы, social, tf2, браузеры, цитаты, gzip, warhammer, велосипед, киви, медикаментоз, общество, оговорки, html, воспитание, мифы, паранойа, письма в редакцию, учеба, 1998, mongodb, soft, soviet, twdnkumus, глянцевые журналы, монетизация, норкотики, сайты, сиськи, типографика, тьюринг, дизайн, железо, живут же люди, лолвут, плагиат, твиттер, еда, тренд, about, бабушки, вещи, видео, зомбоящик, игрушки, социопатия,
Персональное
об авторе и сайте
мойкруг (резюме)
на G+
порнотумблер (rss)
инстаграм (хипстерские фото)

facebook
twitter

skype: acerbial
gtalk: dmitry.smirnov


C любовью к людишкам™,
♥ 1998 - 2013.

powered by mongodb.



Анализ запросов

Народ регулярно спрашивает, как сделано вот это, как будто это что-то сложное. На самом деле это на редкость примитивно, пардон, до гениального просто. Но так как спрашивают регулярно... работает, в общем, это все примерно так:

Поисковики — такие же сайты, как и все остальные (сюрприз, да), поэтому если к вам зашли с поисковика, адрес, с которого зашли, тобишь реферер, легко отслеживается. При этом текст запроса уже содержится в УРЛЕ, с которого к вам зашли, например: http://yandex.ru/yandsearch?text=поиск+на+php. (Правда, часто текст... как это по-русски-то?... URL-encoded, то есть выглядит вот этак: %EF%EE%E8%F1%EA, но это не проблема, у нас есть функция urldecode...).

Собственно, дальше все просто:

Сначала — находим УРЛ, с которого к вам зашли на сайт:

<?php
$url = urldecode($HTTP_REFERER);

Проверяем, а) есть ли вообще реферер, б) не является ли он внутренним, то есть с вашего же сайта (вместо spectator.ru, разумеется, в вашем случае треба подставить что-то другое).

if (($url!='') and (!stristr ($url, 'spectator.ru'))):

После чего проверяем, принадлежит ли адрес, с которого пришли, к какому-нибудь поисковику:

if ((stristr($url, 'yandpage')) or (stristr($url, 'yandsearch'))) { $sw = 'text='; $engine = 'Y'; }
if(stristr($url, 'http://search.rambler.ru/')) { $sw = 'words='; $engine = 'R'; }
if(stristr($url, 'http://sm.aport.ru/')) { $sw='r='; $engine = 'A'; }
if(stristr($url, 'google.')) { $sw='q='; $engine = 'G'; }
if(stristr($url, 'google.yahoo.com')) { $sw='p='; $engine = 'H'; }

(Добавьте поисковик(и) по вкусу сами)...

Обратите внимание, здесь мы убиваем трех зайцев: проверяем, пришли ли люди с поисковика, определяем, с какого ($engine) и устанавливаем соответствующий для данного поисковика параметр $sw. $sw — это кусок текста в УРЛЕ, после которого, собственно, и идет текст запроса, смотрите пример выше: для Яндекса текст запроса идет после «text=».

И тут, наконец, проверяем, пришли ли с поисковика...

if(isset($engine)):

И если пришли, то:

$url2=urldecode($url); # just in case
if (stristr($url, 'yandpage')) {$url2=convert_cyr_string ($url2, k, w);} # если пришли с яндекса, то перекодируем УРЛ (он почему-то всегда в КОИ).

eregi ($sw.'([^&]*)', $url2.'&', $url2);
$url2=$url2[1]; # именно в этих 2х строчках мы и вычленяем запрос, то есть переменная $url2 теперь содержит текст запроса в человеческом виде.

И все, собственно. Дальше все очень просто. У меня, например, это все пришется в простой файл вот в таком виде:

$fullfile='[ <small><b>'.$engine.'</b></small> ] :: <a rel=nofollow href=http://spectator.ru/'.$HTTP_REFERER.'>'.$url2.'</a> :: попал <a rel=nofollow href=http://spectator.ru/'.$REQUEST_URI.'>сюда</a> <small> [ '.date('d.m.Y H:i').' ]</small><br>n';

А выглядит все вот так: spectator.ru/yandex

Дальше не забыть поставить:

else:

.... и тут обработчик тех реферов, которые были НЕ с поисковых систем, после чего, конечно же ---

endif; ?>

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

Слава КПСС!

11 лет назад
0
Привет, Anonymous! Чтобы оставлять комментарии, надо авторизоваться.