4

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

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

我正在使用 MySQL 表作为会话存储

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

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

4

3 回答 3

4

你知道你是否在你的 PHP 安装中使用 Suhosin 吗?

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

无论如何,如果这不是你的问题,只是为了确保基础知识:

  1. 确保您session_id()从 Flash 中传递您的帖子,例如,使用SWF Upload,这是通过将其传递post_params到配置数组的值中来完成的。
  2. 确保你session_id($_POST['session_id])之前打电话session_start()

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

于 2009-03-03T01:28:25.697 回答
0

这听起来与多年来报告的各种错误相似,尽管在大多数情况下它适用于 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/

——马库斯

于 2009-03-03T00:58:09.200 回答
0

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

session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start(); 
于 2014-01-22T10:05:29.030 回答