使用dropzone js插件和会话安全上传多个文件:没有并行上传?

时间:2013-07-17 03:30:58

标签: php session file-upload

我正在使用dropzone.js插件(http://www.dropzonejs.com/),它允许拖放文件上传。除了上传URL和parallelUploads的一个必需参数(见下文)之外,我只使用Dropzone的默认值。

该网站还使用此http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL之类的密码和会话来强制执行用户安全。

我遇到的“问题”是当parallelUploads大于1(默认为2)时,post_file.php似乎没有捕获所有上传。 post_file.php在顶部有一个login_check,以确保上传的文件来自有效用户并获取userID。禁用login_check会使问题消失,但显然这不是解决方案。

为什么并行上传会成为服务器端的问题?它搞乱了会议的魔力吗?对解决方案的任何想法?

并行上传不是关键任务,但它很好,所以较小的文件可以传递一个更大的文件。

谢谢!

1 个答案:

答案 0 :(得分: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和上传都解决了问题。