• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

anolsi

SESSIONS

12 mensagens neste tópico

A primeira coisa com que me deparei ao começar o meu projecto, foi como iria armazenar os dados do utilizador. Foi aí que comecei a estudar as SESSIONS do php. Tudo muito bem. O meu projecto funciona muito bem no meu servidor de testes. No entanto, depois de fazer o upload para o servidor web, faço o login, e ele redirecciona-me (sinal que aceita o login, que é verificado via AJAX), mas na segunda página a variável $_SESSION está vazia. Fiz um phpinfo() em ambos os servidores, e a minha versão do php é 5.2.5, enquanto à do servidor web é 5.1.6, mas as configurações existentes em ambos em relação às SESSIONS estão iguais no phpinfo.

Será a diferença de versões? Ou existirá outro problema para isto não estar a funcionar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu código pode ter erros.

Cada vez envias uma resposta HTTP tens que iniciar a sessão com a função session_start(), ou em alternativa defines a directiva session_autostart como actvia, não tenho a certeza se o nome é exactamente esse.

O que pode tambem estar a acontecer é mandares o utilizador para uma página e depois redireciona-lo para ainda outra página. Se o utilizador tiver os cookies activos, isso não deverá ser um problema e a sessão persiste, se ele tiver os cookies desactivos então a sessão será perdida, uma vez que nesse caso as sessões são mantidas à custa da transformação transparente de todos os links adicionando o SSID como um parametro get.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A primeira coisa com que me deparei ao começar o meu projecto, foi como iria armazenar os dados do utilizador. Foi aí que comecei a estudar as SESSIONS do php. Tudo muito bem. O meu projecto funciona muito bem no meu servidor de testes. No entanto, depois de fazer o upload para o servidor web, faço o login, e ele redirecciona-me (sinal que aceita o login, que é verificado via AJAX), mas na segunda página a variável $_SESSION está vazia. Fiz um phpinfo() em ambos os servidores, e a minha versão do php é 5.2.5, enquanto à do servidor web é 5.1.6, mas as configurações existentes em ambos em relação às SESSIONS estão iguais no phpinfo.

Será a diferença de versões? Ou existirá outro problema para isto não estar a funcionar?

mostra o código =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O browser só muda por duas páginas (php). A primeira do login, e a outra que é actualizada por AJAX, mas sendo sempre a mesma página.

No inicio de ambas tenho:

session_start();

Todos os outros ficheiros php são chamaso via AJAX PELO javascipt ou requires por outros php. A sua primeira linha também é

session_start();

No entanto a segunda página, mesmo antes de chamar outras, para além da LOGIN.php que é onde coloco os valores, "criando" assim a $_SESSION['id'], $_SESSION['tipo'] e outras , a variável $_SESSION já está novamente vazia.

mostra o código =)

Que código? O da minha primeira página, da segunda, do meu ficheiro javascript que chama o login, ou o login?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os dados recebidos via http pelo xmlhttprequest têm tambem eles ter um identificador de sessão. Por outras palavras, precisas de colocar o session_start() em tudo o que evias.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os dados recebidos via http pelo xmlhttprequest têm tambem eles ter um identificador de sessão. Por outras palavras, precisas de colocar o session_start() em tudo o que evias.

o request em xmlhttprequest não precisam de nada físico a identificar a sessão( vísivel )

Se puderes coloca no pastebin o código completo que eu tento dar uma vista de olhos.

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi bem o que quiseste dizer, mas se ele está a fazer pedidos assíncronos, estes só podem ir buscar dados à sessão se a sessão for iniciada para o script que gera as respostas.

Se o utilizador tiver os cookies desactivados então aí é mesmo impossivel receber dados da sessão via xmlhttprequest.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi bem o que quiseste dizer, mas se ele está a fazer pedidos assíncronos, estes só podem ir buscar dados à sessão se a sessão for iniciada para o script que gera as respostas.

Se o utilizador tiver os cookies desactivados então aí é mesmo impossivel receber dados da sessão via xmlhttprequest.

e se fossem sincronos não ?

Tens razão no que disseste, eu apenas estava a dizer que ele não tem que codar nada para identificar a sessão quando faz os requests via xmlhttprequest, acho eu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema é que eu utilizo uma framework (EXTJS) para fazer os pedidos do JavaScript ao servidor, por isso não trabalho explicitamente com o xmlhttprequest.

Estou a acabar de postar o código no PasteBin, quando acabar coloco aqui os links.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e se fossem sincronos não ?

Tens razão no que disseste, eu apenas estava a dizer que ele não tem que codar nada para identificar a sessão quando faz os requests via xmlhttprequest, acho eu.

Se forem sincronos, caso ele tenha os cookies desligados o php adiciona um parametro a todos os links e a sessao assim preserva-se. Nos pedidos feitos via javascript isso já não acontece.

Que é o mesmo que dizer: usar dados da sessão em pedidos feitos por javascript só é possivel se o utilizador aceitar cookies.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim por alto no ficheiro onde crias a sessão não inicias a sessão.

session_start()

Apesar de os redireccionamentos ocorrerem não tens sessão iniciada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora