转帖:关于swfupload在yii下提示302的问题

admin 发表于 [PHP] 分类,标签: PHP开发框架 Yiiframework
0

今天在弄一个图片上传的功能,发现一个一个图片去点非常累,于是下载了一个最新的swfupload,结果用不了>.<,但奇怪的是官方演示里的又能用,没办法,把他演示上的全拔了下来。

放到yii里去用,结果上传的时候老提示302,网上找到一篇文章,说是session的问题(因为我的后台就是用session控制的),文章原文如下:

swfUpload提示302错误原因及解决办法

在使用swfupload上传文件的时候,老提示302。大概知道原因是因为验证失败自动跳转了。

swfuplaod在上传时,会新开一个进程,和原来的进程不一致,要解决这个问题,需要指定session_id,然后在登录页面判断,如果有 post过来的session_id,那么就用函数session_id( $_POST['PHP_SESSIONID'])指定一下。

上传页的JS里面,可以获取当前的SESSION_ID的。

例如上传页的JS中:

post_params: {“PHPSESSID”: “<?php echo session_id(); ?>”},

在验证的判断页中:

if (isset($_POST["PHPSESSID"])) {
session_id($_POST["PHPSESSID"]);
}

(这一段是网上的注释:在带有Session验证的网站后台中SWFUpload无法正常工作,这是因为SWFUpload在上传时相当于重新开辟 了一个新的Session 进程,因此无法与原有程序的Session保持一致,这就需要在上传时传递原有程序的SessionID,根据它来“找回”其应有的Session。)

参照他的方法试了一下,不行。

后来想到,既然是跟session有关,那么我在验证前将session传递过来会如何?于是将:

if (isset($_POST["PHPSESSID"]))
{
session_id($_POST["PHPSESSID"]);
}

这段代码写到了 BackendModule的init()方法里,测试通过!

原文地址:http://www.iorange.cc/read-115.html

发表我的评论