2013-07-17 54 views
0

我使用dropzone.js插件(http://www.dropzonejs.com/),它允許拖放文件上傳。除了上傳URL和並行上傳的一個必需參數(請參見下文)外,我僅使用Dropzone的默認值。使用dropzone js插件和會話安全性上傳多個文件:沒有並行上傳?

該網站還使用像這樣的密碼和會話http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL來強制用戶安全。

我的問題是,當parallelUploads大於1(默認爲2)時,post_file.php似乎沒有捕獲所有的上傳。 post_file.php在頂部有一個login_check,以確保上傳的文件來自有效用戶並獲取用戶ID。禁用login_check會導致問題消失,但顯然這不是解決方案。

爲什麼並行上傳會成爲服務器端的問題?它是否搞亂了會話嗎?任何解決方案的想法?

它不是任務關鍵,有平行上傳,但它會很好,所以較小的文件可以傳遞一個較大的文件。

謝謝!

回答

0

僅2天后回答我自己的問題!

sec_session_start功能包含session_regenerate_id(true);。爲了防止未經授權的上傳,上傳頁面具有會話認證。因此,當同時上傳多個文件時,會話信息正在重新生成,但沒有及時傳播,因此只有一個或兩個文件會進入。

我在調試多個並行ajax請求時意識到了這個問題。 (ajax頁面使用相同的授權檢查。)

不想完全擺脫再生,我向sec_session_start添加了一個參數$ ajax = 0。這樣我就可以保留所有其他(非平行活動)頁面。我將該行更改爲if (!$ajax) session_regenerate_id(true);。現在在並行活動頁面(ajax和文件上傳)中,我將其稱爲sec_session_start(1)

問題解決了Ajax和上傳。

相關問題