Zend Framework sessão a perder
-
03-07-2019 - |
Pergunta
Eu estou tentando implementar um Flash uploader no meu aplicativo Zend Framework, mas estou tendo problemas com a sessão.
The Flash não envia quaisquer cabeçalhos de cookie e é por isso que a sessão é perdida. Estou tentando enviar a sessionId como um param pós e no meu arquivo de inicialização eu adicionei um session_id ($ _ POST [ 'session_id]), mas isso doenst parecem funcionar.
Eu estou usando uma tabela MySQL como armazenamento de sessão
Eu tentei depurar o erro e, tanto quanto eu vejo, o session_id está definido, eo armazenamento retorna os dados corect do banco de dados, mas não parecem ser definida corretamente no $ _SESSION global.
E ainda mais estranho parece funcionar no meu computador Windows, mas não no servidor de teste Linux.
Solução
Você sabe se você estiver usando Suhosin com a instalação do PHP?
Eu ouvi um poucos relatos de Suhosin fazendo isso para as sessões, solução neste caso é desativar suhosin.session.cryptua
no php.ini.
De qualquer forma, se isso não é o seu problema, só para ter certeza com o básico:
- Certifique-se de passar o seu
session_id()
em um post do seu Flash, por exemplo, com SWF Carregar , este é feito passando-o no href="http://demo.swfupload.org/Documentation/" rel="nofollow noreferrer">post_params
valor da matriz de configuração. - Certifique-se de chamar
session_id($_POST['session_id])
antessession_start()
Mas de qualquer maneira, ele está provavelmente relacionado à sua instalação PHP se você está dizendo que trabalha sob o ambiente Windows.
Outras dicas
Este sons semelhantes a vários bugs que foram relatados ao longo dos anos, embora na maioria dos casos trabalhou no Linux e não no Windows.
http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/ fóruns / index.php? t = msg & Goto = 16104 & S = de7d9b854db445eb37d0f33470cac6b0
e tão recentemente como no mês passado:
http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/
- MarkusQ
Tente o seguinte em sua ação do controlador:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();