Как получить в переменную запрос, по которому пришел человек с Яндекса?

Статус
В этой теме нельзя размещать новые ответы.

Raccoon

Участник
Регистрация
31 Июл 2007
Сообщения
176
Реакции
9
PHP-программеры, привет!

Помогите пожалуйста, очень требуется ваш совет.

Как мне получить в переменную запрос по которому пришел человек из поисковой системы? Например, с Яндекса?

Т.е. человек набрал в поиске "где купить пиво?" и перешел на мой сайт. Мне надо чтобы было:

$var = "где купить пиво?"

Как так сделать?.. Подскажите, заранее благодарен
 
$HTTP_REFERER даст урл страницы, с которой пришел
напр _http://www.yandex.ru/yandsearch?text=kak+kupit+pivo
ну а дальше выдрать запрос дело техники
 
а как вырезать text="$text" ??
 
PHP:
if(isset($_SERVER['HTTP_REFERER']) && preg_match('~^http://(?:www\\.)?yandex\\.ru/yandsearch\\?(.*)$~i', $_SERVER['HTTP_REFERER'], $m))
	foreach(explode('&', $m[1]) as $v){
		list($name, $value) = explode('=', $v, 2);
		if($name == 'text'){
			$yand_query = urldecode($value);
			echo 'Вы нашли нас по запросу: ' . htmlspecialchars($yand_query);
			break;
		}
	}
 
Ну а вот нечто наподобие фиксирования янд_гостей на базе предыдущего кода:
if(isset($_SERVER['HTTP_REFERER']) && preg_match ('~^http://(?:www\\.)?yandex\\.ru/yandsearch\\?(.*)$ ~i', $_SERVER['HTTP_REFERER'], $m))
foreach(explode('&', $m[1]) as $v){
list($name, $value) = explode('=', $v, 2);
if($name == 'text'){
$yand_query = urldecode($value);
$fh=fopen("yand_stats.txt", a+);
fwrite($fh, htmlspecialchars($ yand_query)."\r\n");
fclose($fh);
break;
} }
 
PHP:
function GetRefererKeyWords($referer, $SiteURL)
{
	$RefUrl = urldecode($referer);
	if (($RefUrl!='') and (!stristr ($RefUrl, $SiteURL)))
	{
		$sw='';
		if    (stristr($RefUrl, 'google.'))		$sw='q=';
		elseif(stristr($RefUrl, 'search.msn.com'))	$sw='q=';
		elseif(stristr($RefUrl, 'search.live.com'))	$sw='q=';
		elseif(stristr($RefUrl, 'search.yahoo.com'))	$sw='p=';
		elseif(stristr($RefUrl, 'altavista.com'))	$sw='q=';
		elseif(stristr($RefUrl, 'search.aol.co'))	$sw='query=';
		elseif(stristr($RefUrl, 'lycos.'))		$sw='query=';
		elseif(stristr($RefUrl, 'alexa.com'))		$sw='q=';
		elseif(stristr($RefUrl, 'alltheweb.com'))	$sw='q=';
		elseif(stristr($RefUrl, 'netscape.'))		$sw='s=';
		elseif(stristr($RefUrl, 'www.search.com'))	$sw='q=';



		if($sw != '')
		{
			eregi ($sw.'([^&]*)', $RefUrl.'&', $RefUrl);
			return trim($RefUrl[1]);
		}
	}
	return '';
}

Вызов например так:
$RefKW = GetRefererKeyWords($_SERVER['HTTP_REFERER'], $SiteURL);

Для яндекса надо добавить что-то типа
elseif(stristr($RefUrl, 'alltheweb.com')) $sw='text=';
Для других поисковиков соответственно.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху