Descobrindo a consulta que o usuário fez no Google pra chegar no seu site

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Prefácio

O título é bem grande mas o tutorial é simples! Tudo que nós precisamos é saber o que é o REFERER e qual o seu poder!

Conceito

Sempre que você troca de página, a URL anterior fica armazenada numa variável de ambiente chamada “REFERER”, que não possui uma tradução exata para o português mas é algo do tipo “Referência”.
A partir desta “referência” podemos descobrir qual foi a última URL que o nosso usuário esteve (limitando-se a aba atual). Sempre iremos encontrar o referer (se houver) dentro da superglobal $_SERVER.

Mão na massa

Você terá que criar um arquivo que deverá ser incluso no início de todos os arquivos. Chamaremos este arquivo de google.php

<?php

    if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) {
        // Interpreta a URL e fatia ela em módulos... Os dados estarão no índice "query"
        $query = parse_url($_SERVER['HTTP_REFERER']);
       
        // Retira a variável "q" da querystring, que é onde fica a consulta do Google
        parse_str($query['query'], $consulta);
       
        // Coloca a consulta na variável $google
        $google = $consulta['q']; // Olha o "q" aqui! :)
    } else {
        $google = false;
    }
   
    if ($google)
        print "Se você estava procurando por <strong>{$google}</strong>, veio ao lugar certo!";

?>

Fácil, né? :)

Caso você queria simular uma consulta no seu site para testar, basta realizar uma busca no Google e copiar a URL da página de resultados e colar como no exemplo abaixo (coloque esta declaração no começo do script):

<?php

    $_SERVER['HTTP_REFERER'] = 'URL_COMPLETA_DA_CONSULTA_AQUI';

?>

Conclusão

Se parecia difícil, agora percebemos que não é!
Provavelmente eu irei implementar isso no novo PHPit, portanto qualquer sugestão para melhoria do código é bem vinda!

Um abraço a todos e fiquem com Deus!