AS SESSÕES

Sessões e mecanismos de pesquisa

O uso de sessões é necessário em muitos casos, e em particular para :

  • Acompanhar o caminho do visitante no site
  • Memorizar certas informações (como o conteúdo de uma cesta)

As informações relacionadas à sessão são armazenadas num arquivo no servidor. Este arquivo é exclusivo e um identificador é gerado para cada usuário. O identificador é uma sequência de texto composta por pelo menos 32 caracteres. Este torna possível fazer a correspondência entre o usuário e o arquivo que contém as informações da sessão.

O identificador pode ser armazenado  num cookie (portanto, no computador do usuário). Essa é a situação mais comum. No entanto, se o usuário não aceitar cookies, é possível transmitir esse identificador por meio da URL. Certamente já viu URLs contendo uma sequência semelhante a esta ? PHPSESSID = a9e8dc705da1560e9b6d4c1a65ae3245.

Os problemas das sessões para o referenciamento

É preciso  saber que os mecanismos de pesquisa não aceitam cookies. Portanto, muitos sites resolvem esse problema usando as URLs para passar o identificador da sessão, e é aí que os problemas começam.

Os robots indexam este tipo de URL, além disso, podemos verificá-lo facilmente. Para fazer isso, basta inserir a seguinte consulta no mecanismo da sua escolha.

Em média (depende da configuração do servidor), os arquivos da sessão são mantidos por trinta minutos. Desta forma, quando o robot voltar, uma nova sessão começará com uma nova URL para indexar. Observe que o conteúdo será idêntico à página visitada anteriormente pelo robot. Os robots podem indexar a mesma página centenas de vezes.

Como pode imaginar, depois de um tempo, os mecanismos de pesquisa detectam 2 problemas principais :

  •       URL não sustentável
  •       Duplicação de conteúdo
  •      Número infinito de páginas a indexar

Uma solução para fazer as sessões desaparecerem ?

Dizer que as sessões não devem ser usadas não é uma solução concebível. De fato, as sessões podem ser muito práticas para os desenvolvedores, como vimos no início desse artigo. Então, como removo os identificadores de sessão das URLs ? Várias soluções são possíveis :

  •     Iniciar somente a sessão quando esta for útil. Alguns sites abrem uma sessão na primeira página visitada quando esta realmente não é usada até o usuário estar logado.
  •       Passar o identificador em prioridade pelos cookies e não pela URL
  •       Privar usuários da internet que não aceitam cookies e proibir a passagem de identificadores nas URLs
  •       Detectar os robots e iniciar as sessões apenas com usuários da internet

Proibir os identificadores de sessão nas URL com htaccess

SetEnv SESSION_USE_TRANS_SID 0                

Proibir os identificadores de sessão nas URL por meio do php.ini

session.use_trans_sid = 0                                              

Para servidores IIS, já vi um administrador de rede resolver o problema através de uma opção simples no seu painel de administração.

Impedir a passagem de identificadores de sessão na URL

/* Desativação do reconhecimento do identificador da sessão na URL */

ini_set('session.use_trans_sid', "0");

/* Autorização para uso de cookies */

ini_set ('session.use_cookies', "1");

/* Autorização para usar SOMENTE cookies */

ini_set ('session.use_only_cookies', "1"); */

/* Proibição de adicionar o identificador da sessão no código html gerado */

ini_set ("url_rewriter.tags","");

/* Tudo está sob controle, iniciamos a sessão */ session_start();

Seria possível torná-lo mais curto, mas apresentei-vos aqui o código numa versão paranóica 🙂

Detectar os robots em PHP

Existem vários métodos para detectar os robots. Por exemplo, é possível controlar o user do usuário, o host e o IP de cada visitante para iniciar ou não uma sessão. Eis uma proposta para controlar apenas o user do usuário :

<?php

function checkUaRobot(){

  $robot = false;

  $_UA = array("GoogleBot", "Slurp","MsnBot");

  // Complete esta lista com todos os UA que você deseja

  foreach($_UA como $ua) {

    // Comparamos o agente do visitante com a nossa lista

    if(eregi($ua,$_SERVER["HTTP_USER_AGENT"])) return true;

  }

  // A UA não está em nossa lista, é um visitante humano

  return false;

 }

?>

// Chamamos a função

if (!checkUaRobot()) {session_start(); }

?>

Uma "solução" final é permitir que o Google se desenrasque sozinho. Mais cedo ou mais tarde, ele próprio fará a limpeza, excluindo páginas duplicadas... mas isso não é recomendado.

 

Próximo : Formulários

Anterior : Tecnica de referenciamento

Oseox Monitoring