0

我正在使用 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 以确保上传的文件来自有效用户并获取用户 ID。禁用 login_check 会使问题消失,但显然这不是解决方案。

为什么并行上传会成为服务器端的问题?它会破坏会话魔力吗?任何解决方案的想法?

并行上传并不是关键任务,但如果较小的文件可以传递一个较大的文件,那就太好了。

谢谢!

4

1 回答 1

0

仅两天后就回答了我自己的问题!

sec_session_start函数包含session_regenerate_id(true);. 为了防止未经授权的上传,上传页面有会话认证。因此,当同时上传多个文件时,会话信息正在重新生成,但没有及时传播,因此只有一个或两个文件会进入。

我在调试多个并行 ajax 请求时意识到了这个问题。(ajax 页面使用相同的授权检查。)

不想完全摆脱再生,我在sec_session_start. 这样我就可以保持所有其他(非并行活动)页面不变。我将线路更改为if (!$ajax) session_regenerate_id(true);. 现在在并行活动页面(ajax 和文件上传)上,我将其称为sec_session_start(1).

ajax 和上传都解决了问题。

于 2013-07-19T16:03:56.857 回答