Pergunta

Eu nunca quis permitir que um usuário manter-se conectado para qualquer comprimento de tempo para que eu nunca vi um uso para um "lembrar de mim" recurso.Eu comecei a pensar sobre como é feito e gostaria de alguns esclarecimentos.

Atualmente estou armazenar minhas sessões em um banco de dados.O que sempre mais me chocou foi assim que, apesar de eu não explicitamente definir um cookie é colocado em meu navegador.Eu estou um pouco confuso, porque uma sessão de uma sessão e um cookie é um cookie.Eu não vejo como uma sessão define um cookie.

Eu também gostaria de saber se, simplesmente definir uma outra variável de sessão em sessão de matriz para manter o usuário conectado, seria suficiente ou seria eu, ainda é necessário definir um cookie?

Foi útil?

Solução

O que sempre me deixou perplexo foi como, embora eu não tenha definido explicitamente um biscoito, um é colocado no meu navegador.

Um manipulador de sessão deve identificar qual sessão pertence a qual usuário.

A grande maioria das bibliotecas de sessão faz isso definindo um cookie.

(Está) definir outra variável de sessão na matriz de sessão para manter o usuário conectado seria suficiente ou eu ainda precisaria definir um cookie?

A maioria das bibliotecas de sessão conjunto Cookies de sessão. Estes são cookies sem um tempo de validade especificado. Eles expiram quando o navegador fecha e não são suficientes para implementar um recurso "Lembre -me" (que deve persistir nos reinicializações do navegador, portanto, deve ter um tempo explícito de validade).

Outras dicas

Para retirar os dados da sessão do seu banco de dados, é necessária, é necessária uma chave. Isso é chamado de ID da sessão.

O ID da sessão precisa ser armazenado em algum lugar. Como parte da sequência de URL que o cliente publica de volta ou, mais comumente, em um cookie no cliente. Quando a solicitação é publicada, a sessão lê o valor do cookie e sabe qual registro recuar do armazenamento da sessão.

Isso acontece automaticamente.

A única razão para usar se a sessão é se os dados que você deseja manter for maior que 4KB (limitações do navegador); ou se o tempo necessário para extrair os dados do seu servidor for maior do que lê -los no armazenamento da sessão.

Se a quantidade de dados que você estiver armazenando for menor que 4KB, eu recomendo que você apenas defina isso no cookie. Geralmente, guardo coisas como o ID do usuário, o primeiro nome do usuário e alguns outros atributos. Lembre -se de que é trivial inspecionar um valor de cookies; portanto, essas informações devem ser criptografadas antes de ir ao cliente.

Outra coisa é que se o tempo de consulta para extrair os dados de que você precisa da fonte original é pequeno, opte por isso em vez de colocá -los em sessão. Dessa forma, você só o obtém quando realmente precisa, em vez de com cada página de página.

Explicar a relação entre a Sessão e Cookies:

PHP usa Cookies para identificar exclusivamente a sessão para cada usuário.Essa é a única maneira mais confiável porque o cookie é enviado a cada vez que você pedir um ficheiro a partir do servidor.Usando o token no cookie, que também é o identificador da Sessão, o PHP irá procurar o diretório tmp para ver se a sessão.Se a sessão, as variáveis são carregados a partir do arquivo correta e você será capaz de acessar as variáveis de sessão.

Portanto, cookies para armazenar o identificador de sessão que é necessário para identificar o usuário que utiliza o qual a sessão.Esta é também uma forma de Sequestro de Sessão, é quando as pessoas podem alterar a sessão de identificação cookie para usar de outra pessoa identificador de sessão.

A implementação de sessão PHP subjacente define o cookie. Você pode alterar isso e ter o valor de ID da sessão passado na sequência de consultas, mas eu não recomendo. Você não usa o cookie, o PHP faz. Ele faz referência ao valor de ID da sessão armazenado no cookie para executar pesquisas nos dados da sessão.

Eu também gostaria de saber, se simplesmente definir outra variável de sessão na matriz de sessão para manter o usuário conectado seria suficiente ou eu ainda precisaria definir um cookie?

Assim que o usuário fecha o navegador, a sessão é morta e o cookie é excluído. Não acredito que nenhum mecanismo sai para persistir o valor da sessão e por boas razões.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top