As $_SESSION
variáveis são armazenadas no cliente ou no servidor?
As $_SESSION
variáveis são armazenadas no cliente ou no servidor?
Respostas:
A localização do $_SESSION
armazenamento variável é determinada pela session.save_path
configuração do PHP . Geralmente, isso ocorre /tmp
em um sistema Linux / Unix. Use a phpinfo()
função para exibir suas configurações específicas, se não tiver 100% de certeza, criando um arquivo com este conteúdo no DocumentRoot
domínio:
<?php
phpinfo();
?>
Aqui está o link para a documentação do PHP nesta configuração:
http://php.net/manual/en/session.configuration.php#ini.session.save-path
Como já mencionado, o conteúdo é armazenado no servidor. No entanto, a sessão é identificada por um ID de sessão, que é armazenado no cliente e enviado com cada solicitação. Normalmente, o ID da sessão é armazenado em um cookie, mas também pode ser anexado aos URLs. (Esse é o PHPSESSID
parâmetro de consulta que você vê algumas vezes)
Eles geralmente são armazenados no servidor. O local onde eles estão armazenados é de sua responsabilidade como desenvolvedor. Você pode usar a session.save_handler
variável de configuração e session_set_save_handler
para controlar como as sessões são salvas no servidor. O método de salvamento padrão é salvar sessões em arquivos. Onde eles são salvos é controlado pela session.save_path
variável.
Uma adição: Note-se que, caso "/ tmp" seja o diretório em que os dados da sessão estão armazenados (o que parece ser o valor padrão), as sessões não persistirão após a reinicialização do servidor da Web, como "/ tmp "é frequentemente eliminado durante a reinicialização. O conceito de persistência do cliente permanece e cai com a persistência do armazenamento no servidor - o que pode falhar se o diretório "/ tmp" for usado para dados da sessão.
Estou usando o Ubuntu e minhas sessões são armazenadas em / var / lib / php5.
Como o Sr. Taylor apontou, isso geralmente é definido no php.ini. Geralmente eles são armazenados como arquivos em um diretório específico.
Para o ubuntu 16.10, as sessões são salvas em / var / lib / php / session / ...
Como funciona? Como ele sabe que sou eu?
A maioria das sessões define uma chave de usuário (chamada de sessionid) no computador do usuário, semelhante à seguinte: 765487cf34ert8dede5a562e4f3a7e12. Em seguida, quando uma sessão é aberta em outra página, ela verifica a chave do usuário no computador e corre para o servidor para obter suas variáveis.
Se você limpar o cache por engano, sua chave de usuário também será limpa. Você não poderá mais obter suas variáveis do servidor, pois não conhece seu ID.
Nas minhas máquinas Ubuntu, as sessões são armazenadas em
/var/lib/php/sessions
e você tem que sudo ls
neste diretório somente ls
ele lançará
ls: não é possível abrir o diretório '.': permissão negada
E no meu servidor Windows Wamp, as sessões php são armazenadas em
C:\wamp64\tmp
e se você instalar php autônomo no Windows, não haverá valor definido por padrão
session.save_path => no value => no value
Muitas das respostas acima são opacas. Na minha opinião, o autor desta pergunta simplesmente quer saber onde variáveis de sessão são armazenadas por padrão. De acordo com isso: https://canvas.seattlecentral.edu/courses/937693/pages/10-advanced-php-sessions, eles são simplesmente armazenados no servidor por padrão . Felizmente, outros acharão essa contribuição significativa.