Как я могу получить информацию о запросах от поисковых систем? - PullRequest
1 голос
/ 23 сентября 2009

Я хочу использовать запрос, который кто-то использовал для поиска моей страницы, они указаны в URL-адресе ссылающейся страницы $ GET _ ['q'] (и для Yahoo $ GET _ ['p']). Как я могу использовать это? Мне нужно что-то вроде $ query = REFERRING PAGE ($ GET _ ['q']), но я просто не могу понять, как это сказать.

1 Ответ

5 голосов
/ 23 сентября 2009

Информация, которую вы ищете, доступна в $_SERVER['HTTP_REFERER']

Например, со страницы с этим URL: http://tests/temp/temp-2.php?q=test+glop, эта часть кода:

var_dump($_SERVER['HTTP_REFERER']);

Дает:

string 'http://tests/temp/temp-2.php?q=test+glop' (length=40)


Вы можете использовать parse_url, чтобы получить строку запроса с этого URL:

$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);
var_dump($query);

получит вас:

string 'q=test+glop' (length=11)


Теперь вы можете проанализировать эту строку запроса с помощью parse_str; этот код:

$params = array();
parse_str($query, $params);
var_dump($params);

Получит ли ты:

array
  'q' => string 'test glop' (length=9)


И, наконец, вы можете проверить, находится ли интересующий вас параметр в этом массиве:

if (isset($params['q'])) {
    var_dump($params['q']);
}

Даст нам, в этом примере:

string 'test glop' (length=9)


Et voila; -)

Просто обратите внимание, что Referer отправляется клиентом, что означает:

  • он может быть подделан и может содержать все что угодно - включая плохие вещи (остерегайтесь инъекций SQL и XSS!)
  • опционально: браузер не обязан отправлять его.
...