Zend Framework perd une session
-
03-07-2019 - |
Question
J'essaie d'implémenter un programme de téléchargement Flash dans mon application Zend Framework mais je rencontre des problèmes avec la session.
Le Flash n'envoie aucun en-tête de cookie, raison pour laquelle la session est perdue. J'essaie d'envoyer sessionId en tant que paramètre de publication et dans mon fichier d'amorçage, j'ai ajouté un session_id ($ _ POST ['session_id]), mais cela ne semble pas fonctionner.
J'utilise une table MySQL comme stockage de session
J'ai essayé de déboguer l'erreur et, autant que je sache, session_id est défini et le stockage renvoie les données corect de la base de données, mais elles ne semblent pas être correctement définies dans le global $ _SESSION.
Et même plus étrange, il semble fonctionner sur mon ordinateur Windows mais pas sur le serveur de transfert Linux.
La solution
Savez-vous si vous utilisez Suhosin avec votre installation PHP?
J'ai entendu un quelques rapports de Suhosin faisant cela aux sessions, solution en cours ce cas est de désactiver suhosin.session.cryptua
dans php.ini.
Quoi qu'il en soit, si ce n'est pas votre problème, juste pour être sûr des bases:
- Assurez-vous de passer votre
session_id ()
dans un message de votre Flash, par exemple avec Le téléchargement de fichiers SWF s'effectue en le passant dans lepost_params
a> valeur du tableau de configuration. - Assurez-vous d'appeler
id_session ($ _PART ['id_session]]
avantsession_start ()
Quoi qu'il en soit, il est probablement lié à votre installation PHP si vous dites que cela fonctionne sous votre environnement Windows.
Autres conseils
Cela ressemble à plusieurs bugs signalés au fil des ans, bien que dans la plupart des cas cela fonctionne sous Linux et non sous Windows.
http://framework.zend.com/issues/browse/ZF-2459 forums / index.php? t = msg & goto = 16104 & S = de7d9b854db445eb37d0f33470cac6b0
et aussi récemment que le mois dernier:
http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/
- MarkusQ
Essayez ce qui suit dans l'action de votre contrôleur:
session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start();