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