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

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!

  • Kuen

    Boa Jaques!! Sempre quis saber como colocar as tags de pesquisa no site!! Shows!!

    Abração!

  • Adorei.

  • uhuuu…. o novo blogdoxorna com certeza irá contar com esse recurso =)

  • Boooaaa Rafa… Show d bola esse esquema.. vou começar implementalo em meus projetos.. abração

  • Renato

    Como eu faria para tambem pegar o nome e a url do site?

    Exemplo :

    Alem de pegar a palavra pesquisada, queria pegar em separado a url do site (www.google.com.br) e pegar o nome do buscador (exemplo: google, yahoo etc…)

    Descobri esse site (phpit.com.br) hoje. Muito bom. Parabéns pelos artigos.

    Renato

  • olha veio o que eu tava casando era quase isso mas eu queria criar uma pagina so que quando alguem emtrase nessa pagina o link anterior que ela tava antes fosse copiado em uma log.txt em meu servidor. tem como?

  • Michel

    Show de bola! Parabéns.

  • David

    Rafael, obrigado pela ajuda! Não testei seu script em PHP, mas preciso de uma solução semelhante em asp.

    No asp também há o Request.ServerVariables("HTTP_REFERER"), porém quando rodo a pesquisa do google com base em uma palavra chave e clico no meu link, o retorno dessa varíavel é apenas "https://www.google.com/&quot; não retornando o restante da query.

    Sabe me dizer se no PHP também isso está acontecendo? Manja um pouco de asp para me dar uma luz?? Obrigado!!!

  • David

    Rafa, seu script funciona no Chrome ?? Em ASP não funciona, testei no Firefox e funcionou legal. To achando que é pela política de privacidade do Google. Pode confirmar se o seu funciona legal no Chrome??

  • Slim Comar

    muito legal… só lembrando que o referer na funciona em alguns navegadores (até onde eu sei)