Jump to content
Fórum Script Brasil
  • 0

Variáveis De Sessao Que Expiram


Halfar

Question

Fiz um programa de cadastro que contem variaveis de sessão. Os dados recuperados do formulário são armazenados em variáveis de sessão e gravados no BD. Ocorre que, não entendemos o por que, de repente os dados não são mais gravados no BD, fica lá um campo em branco. Discutindo o assunto com colega da área, ele achou que, como as variaveis de sessão tem um tempo de vida, elas geralmente expiram em 20 minutos, então durante estes 20 minutos os dados são gravados, mas passado este tempo, como as variaveis expiraram, então cadastrou-se registros em branco.

Bem, esta foi a opinião dele, mas eu particularmente não concordo pelo seguinte motivo.

O programa tem duas paginas, uma do formulario, e outra que executa o codigo para gravar o registro.

No topo de ambas as páginas existem as declarações de inicio de sessão, assim:

<?

session_start();

session_register("xCadIndNI");

session_register("xCadAnoNI");

session_register("xCadMesNI");

session_register("Erro");

session_register("Senha_session");

session_register("NIAno");

?>

Note que no inicio deste codigo existe o session_start, onde a sessão está sendo iniciada. Este codigo está presente em ambas as páginas, na do formulário e na página que executa o acesso ao banco para gravar os registros. Oras, se session_start inicia uma sessão, então toda vez que a página é executada é iniciada uma nova sessão, então o contador de tempo zera, pois a cada inserção de novo registro a sessão é iniciada novamente.

Então, pergunto se alguém já teve este tipo de problema ou se poderiam dizer algo a respeito.

obrigado.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Tirado do manual do php.

Nota: Apartir do PHP 4.3.3, usar session_start() quando a seção já tiver sido iniciada irá resultar em um erro de nível. E_NOTICE. Também, o segundo início de seção será simplesmente ignorado.

Isso diz que se você chamar varias sessoes em seguencia, o sistema cria na primeira chamada, e ignora as outras, mas se você demorar muito entre uma chamada e outra, a sessao expira e uma nova é criada, e que provoca a perda das infomações.

Link to comment
Share on other sites

  • 0

Ola,

fiquei meio na dúvida. Veja só, seu eu coloco o start na primeira página, aí o usuario clica no botao e é processada a segunda página, que volta logo em seguida para a primeira pagina. Como nesta primeira página tem o start da sessão, então o que ocorre ? É criada uma nova sessão? E se não for criada ela vai expirar? E neste caso, como criarei uma segunda chamada de sessão?

Link to comment
Share on other sites

  • 0
Ola,

fiquei meio na dúvida. Veja só, seu eu coloco o start na primeira página, aí o usuario clica no botao e é processada a segunda página, que volta logo em seguida para a primeira pagina. Como nesta primeira página tem o start da sessão, então o que ocorre ? É criada uma nova sessão? E se não for criada ela vai expirar? E neste caso, como criarei uma segunda chamada de sessão?

Olhá so, o session_start(); deve ser colocado em toda página que for usar a sessção, o que o sistema faz e quando ele encontra um session_start(); e ferificar se uma sessão já existe, se existir ele pega o que tiver gravado la, se não tiver nenhunha sessão ai ele a cria.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...