我正在尝试在我的 Zend 框架应用程序中实现 Flash 上传器,但我在会话中遇到问题。

Flash 不发送任何 cookie 标头,这就是会话丢失的原因。我试图将 sessionId 作为 post 参数发送,并在我的引导文件中添加了 session_id($_POST['session_id]) 但这似乎有效。

我使用 MySQL 表作为会话存储

我尝试调试错误,据我所知,session_id 已设置,并且存储从数据库返回正确的数据,但它似乎在 $_SESSION 全局中设置不正确。

更奇怪的是,它似乎可以在我的 Windows 计算机上运行,​​但不能在 Linux 临时服务器上运行。

有帮助吗?

解决方案

您知道您的 PHP 安装中是否使用了 Suhosin 吗?

我听说过一个 很少有报道 Suhosin 对会话执行此操作,这种情况下的解决方案是禁用 suhosin.session.cryptua 在 php.ini 中。

无论如何,如果这不是您的问题,只需确定基础知识即可:

  1. 确保您通过了 session_id() 例如,在 Flash 的帖子中 SWF 上传, ,这是通过将其传递到 post_params 配置数组的值。
  2. 确保你打电话 session_id($_POST['session_id])session_start()

但无论如何,如果你说它在你的 Windows 环境下运行,它可能与你的 PHP 安装有关。

其他提示

这听起来与多年来报告的各种错误类似,尽管在大多数情况下它在 Linux 上运行而不是在 Windows 上运行。

http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/forums/index.php?t=msg&goto=16104&S=de7d9b854db445eb37d0f33470cac6b0

就在上个月:

http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/

——马库斯Q

在您的控制器操作中尝试以下操作:

session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start(); 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top