Os arquivos de sessão geralmente são armazenados no /tmp/
servidor, por exemplo, e são nomeados sess_{session_id}
. Eu estive olhando o conteúdo e não consigo descobrir como eles realmente funcionam.
Buscar o nome da variável e o conteúdo do arquivo é fácil. Mas como o PHP sabe qual sessão pertence a quem?
O session_id parece totalmente aleatório e um endereço IP pode ter vários usuários e cada usuário pode ter várias sessões se houver mais de uma janela do navegador aberta.
Então, como isso funciona?
Respostas:
Na situação geral:
PHPSESSID
)Os dados nos arquivos das sessões são o conteúdo de
$_SESSION
serializado (isto é, representado como uma sequência - com uma função como serializar ) ; e não é serializado quando o arquivo é carregado pelo PHP, para preencher a$_SESSION
matriz.Às vezes, o ID da sessão não é armazenado em um cookie, mas também é enviado nos URLs - mas isso é bastante raro atualmente.
Para obter mais informações, consulte a seção Tratamento de sessões do manual, que fornece algumas informações úteis.
Por exemplo, há uma página sobre Passing the Session ID , que explica como o ID da sessão é passado de uma página para outra, usando um cookie ou em URLs - e quais opções de configuração afetam isso.
fonte
Como funciona a sessão PHP
Primeiro, o PHP cria um número identificador único de 16 bytes (armazenado como uma cadeia de 32 caracteres hexadecimais, por exemplo
a86b10aeb5cd56434f8691799b1d9360
) para uma sessão individual.O cookie PHPSESSID passa esse número de identificação exclusivo para o navegador dos usuários para salvar esse número.
Um novo arquivo é criado no servidor com o mesmo nome do número de identificação exclusivo com o prefixo sess_ (ie
sess_a86b10aeb5cd56434f8691799b1d9360
.)O navegador envia esse cookie para o servidor com cada solicitação.
Se o PHP obtiver esse número de identificação exclusivo do cookie PHPSESSID (em cada solicitação), o PHP pesquisará no diretório temporário e comparará esse número com o nome do arquivo. Se os dois forem iguais, ele recuperará a sessão existente, caso contrário, criará uma nova sessão para esse usuário.
Uma sessão é destruída quando o usuário fecha o navegador ou sai do site. O servidor também encerra a sessão após o período predeterminado de tempo da sessão expirar. Estas são as etapas simples do mecanismo que o PHP está usando para lidar com a sessão. Espero que este artigo ajude você a entender como o PHP SESSION está funcionando.
Veja este artigo para mais detalhes. Como funciona a sessão PHP
fonte
mysite.com/cart
. Também receberei meu "Olá Joe Doe, 5 mensagens, aqui está a sua lista de carrinho de compras ...", também conhecida como informações da sessão. - Mas por que o navegador referente a essa guia em branco envia qualquer ID de sessão junto com a solicitação GET? rápida atualização: Ah, encontrei a resposta: +)O ID da sessão é realmente aleatório e é passado em um cookie ou na URL, dependendo da configuração. Você já deve ter visto este PHPSESSID = xxxx em alguns URLs, também existe um cookie com esse nome.
fonte
As sessões no PHP são iniciadas usando a função session_start (). Como a função setcookie (), a função session_start () deve vir antes de qualquer HTML, incluindo linhas em branco, na página. Ele terá a seguinte aparência:
<?php session_start( );?><html><head>
....... etc A função session_start () gera um ID de sessão aleatório e o armazena em um cookie no computador do usuário (essa é a única informação da sessão que é realmente armazenada no lado do cliente. ) O nome padrão do cookie é PHPSESSID, embora isso possa ser alterado nos arquivos de configuração do PHP no servidor (no entanto, a maioria das empresas de hospedagem o deixará em paz.) Para fazer referência à ID da sessão no seu código PHP, você deve, portanto, referenciar o variável $ PHPSESSID (é um nome de cookie; lembra-se de Cookies?)fonte