mudanças de valor de identificação de session

Estou escrevendo um site PHP. Eu tenho $_SESSION['id'] que contém o nome de usuário de um usuário, que usarei esse valor mais tarde no meu script. No entanto, percebo que a ID muda quando navego no site.

O id é reservado de alguma forma? Ou, eu deveria mudar id para outra coisa?

Este problema está acontecendo sempre que eu clicar em um botão várias vezes. Estou 100% seguro de que não estou alterando $_SESSION['id'] além do login inicial.

Alguém poderia me ajudar a entender o que está acontecendo e como ele pode ser corrigido.

Eu vou assumir que você já usa session_start , se não ver os outros comentários: P

Se você tiver registros globais, você pode estar vendo um comportamento como esse se você usar a variável $id no seu código. Como teste, tente:

 < ?php session_start(); $_SESSION['testing'] = 'Foo'; $testing = 'bar'; die($_SESSION['testing']); ?> 

Recarregue a página algumas vezes. Se o bar imprimir ao invés de Foo , esse pode ser o seu problema. Você provavelmente quer fazer o nome da variável da session algo que é menos provável que se use em outro lugar, ou (mais correto) desative os globals do registro.

Certifique-se de iniciar a session – veja session_start ();

Certifique-se de que está chamando session_start() no topo da página (aka antes de qualquer outra coisa).

Isso pode estar causando o parafuso.

Um resumo muito rápido de por que você precisa fazer isso:

Na maioria das vezes, um id de session (diferente de $ _SESSION [‘id’], não se preocupe) é armazenado por meio de cookie. Os valores dos cookies são enviados através dos headers das respostas, o que precisa ser o primeiro a ser enviado de volta para o cliente. Então, se você estiver enviando NINGUÉM antes de chamar session_start (), você está realmente forçando o php a enviar os headers de resposta. Isso fará com que os headers de resposta NÃO contenham o valor da session de cookies, portanto, não é possível usar a session de forma adequada.