Sessões, subdomínios e múltiplos servidores

Enviada por Marcelo Silveira 
Marcelo Silveira
Sessões, subdomínios e múltiplos servidores
05 de January de 2007 às 11:58AM
Olá,

Meu site funciona com subdomínios, e os usuários navegam passando de um para o outro constantemente (por exemplo, home.meusite.com, produtos.meusite.com, etc)

Além disso, o site funciona em 3 servidores diferentes para balanço de carga, com 3 ips diferentes.

Os usuários se logam, o php gera as sessões, tudo normal. Quando o usuário se desloga, eu dou unset em alguns valores do $_SESSION.

O problema é o seguinte: Imagine que o usuário está em home.meusite.com, e que ele caiu no servidor 1. Quando ele se desloga, o script dá um unset em alguns valores do $_SESSION, e salva o arquivo da sessão sem esses valores. Agora digamos que o usuário em seguinda entre em produtos.meusite.com. Se ele cair novamente no servidor 1, nao tem problema, pq o arquivo da sessão foi atualizado, mas se ele cair no servidor 2, o arquivo da sessão não terá sido atualizado, e o usuário aparece logado novamente.

Alguma ideia de como resolver isso? É possível fazer o php reescrever automaticamente o arquivo de sessão em 3 servidores diferentes no momento de dar o unset?

Abraço,
Marcelo Silveira
Marcos Regis
Re: Sessões, subdomínios e múltiplos servidores
05 de January de 2007 às 12:49PM
procura entender a propriedade domain do session_set_cookie_params

mas confesso que não entendi a duvida.
vc nao quer usar session_destroy()?
Marcelo Silveira
Re: Sessões, subdomínios e múltiplos servidores
05 de January de 2007 às 04:08PM
Marcos,

A dúvida é a seguinte:

Esquece os subdomínios. Eles não fazem a menor diferença aqui.

Quando o usuário desloga, o script do servidor onde ele está faz tudo direito, mas enquanto a session dele vai estar ok neste servidor, se ele der um refresh, por exemplo, e cair em um servidor diferente, o script não terá corrigido a session neste outro servidor, e o usuário aparece logado novamente. Mesmo que eu use o session_destroy(), ele vai destruir a session em 1 dos servidores. Se ele for navegar deslogado e cair em outro servidor, vai aparecer logado novamente.

eu fiz o teste e abri o arquivo da sessão que eu estava usando nos 2 servidores. O servidor onde eu estava quando desloguei, mostra os valores corretos da session. Quando eu abro o mesmo arquivo que estava registrado no outro servidor, ele não tem os valores atualizados, pois o script atualizou apenas a session do servidor onde eu estava quando desloguei.

Eu sei, isso é muito confuso, mas é o meu environment, fazer o que?

Abraço.

Marcelo Silveira
Marcos Regis
Re: Sessões, subdomínios e múltiplos servidores
09 de January de 2007 às 09:19AM
Confesso que ainda não entendi por que esta dando problema.
Voce esta usando variaveis com o mesmo nome em todos os servidores?
porque nao tenta usar um vetor com o nome do dominio.
Eu uso muito este esquema para criar sessoes multiplas em um mesmo servidor e mesmo dominio e funciona bem.
ex.:
pagina somente_logado.php
<?php
if (!session_start)die ("Erro inesperado");
verificanso se existe os valores
if ($_SESSION['somente_logado']){
//.... a entrada existe e blablabla
}
// criando as entradas
$_SESSION['somente_logado']['nome']="NOME";
$_SESSION['somente_logado']['senha']="SENHA";
?>

Quando quero remover os valores apenas uso
unset($_SESSION['somente_logado']); e todos os valores desta "sub-sessão" desaparecem
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.