程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> swfupload在yii下提示302的問題 解決方案

swfupload在yii下提示302的問題 解決方案

編輯:PHP基礎知識
 

今天在弄一個圖片上傳的功能,發現一個一個圖片去點非常累,於是下載了一個最新的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()方法裡,測試通過!

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved