【问题标题】:Flash and SessionsFlash 和会话
【发布时间】:2010-08-25 09:17:11
【问题描述】:

首先,我使用的是 KohanaPHP 框架。

我已经成功实现了 SWFUpload,效果很好。我只有一个问题。

主要问题是我需要允许用户在提交表单之前上传附件。所以我决定使用 Session var 来存储附件数组。不幸的是,它仅在我使用 HTML 上传(基于 iframe)时有效,但在我使用 SWFUpload 时无效。

我为此尝试使用 Google 搜索,但没有任何可行的解决方案。有什么想法吗?

更新和解决方案
基本上,我不知道 Flash 和会话存在问题。提供相同的会话 ID 对我没有帮助,因为我没有登录。无论如何,我为有同样问题的人找到了解决方案。

我创建了一个项目的唯一 ID。我将文件上传到临时目录,然后...我正在扫描此目录并将上传的文件名添加到会话中。

汤姆

【问题讨论】:

  • @Pekka - 代码的哪些部分可以帮助你?
  • 我对 Kohana 不熟悉,所以我无能为力,但您正在描述一个抽象概念(向表单添加附件)并且您没有展示它是如何实现的。因此,不可能就如何使其与 SWFUpload 一起工作提出任何建议。

标签: php flash session kohana


【解决方案1】:

您需要手动将会话 ID 传递给 SWFUpload。简而言之,您可以在模板中执行此操作:

<script type="text/javascript">
var PHPSESSID = <?php echo json_encode(session_id()); ?>;
</script>

然后您使用您的 SWFUpload 代码执行此操作:

var settings = {
   post_params: {"PHPSESSID" : PHPSESSID},
   /* the rest of the settings */
};

最后,在你的应用程序代码中,你调用session_start之前,你需要这样做(通常只是在你的 index.php 或你使用的任何引导程序中):

// Restore session that came from SWFUpload
if(isset($_REQUEST['PHPSESSID']))
    session_id($_REQUEST['PHPSESSID']);

在此之后 session_start() 将使用正确的会话,即使是 SWFUpload 请求。

【讨论】:

  • 我会尝试您的建议,如果它们有效,会通知您。
  • 嗯...在将if(isset($_REQUEST['PHPSESSID'])) session_id($_REQUEST['PHPSESSID']); 放入会话库后,我会取消登录吗?有什么建议么? :)
  • 它是否在任何其他会话代码之前(它绝对必须是您使用的第一个会话相关功能)。
  • 基本上,我已将其放入 Kohana 会话库中,在 create() 方法中,在 session_start() 之前。
  • 谢谢。您的回答没有解决我的问题它给出了一个想法。我实现了一个解决方案并且它正在工作,所以我会将你的答案标记为正确,因为它正在处理纯 PHP 代码(不使用任何框架)。
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 2017-03-04
相关资源
最近更新 更多