在uploadify中传递$ _SESSION

时间:2011-06-06 21:51:59

标签: php uploadify

我正在使用uploadify来允许以表格形式上传图片。

我遇到的问题如下:

要提交表单,用户必须登录。 理想情况下,图像将上传到路径/上传/

问题是,uploadify的swf连接的php脚本没有获得当前活动的会话。这意味着我无法做到

<?php
// this would be the backend script that handles the upload

session_start();
$username = $_SESSION['username'];
$upload_path = "/uploads/$username/";

?>

现在,uploadify允许您以JSON格式将$ _POST信息传递给php脚本。

所以我可以做到

scriptData:{username:'<?php echo $_SESSION['username'] ?>'}

在javascript部分和php将收到变量。但这并不安全......有人可能会对这些信息进行调整并使{用户名:无论他想要什么}。

如何解决这个问题?

tl; dr - 使用uploadify时,如何在后端脚本中使用现有的$ _SESSION变量?

2 个答案:

答案 0 :(得分:4)

不安全:

使用请求发送会话ID,并让服务器使用该会话ID(如果已发送)。

当我使用swf上传器时,我做到了。像这样:

if ( !empty($_POST['sess']) ) {
    session_id($_POST['sess']);
}
session_start();

在您发出请求的页面上,您将获得会话ID:

<?php echo session_id(); ?>

应该工作,但也不是很安全。我的建议:不要使用swf上传器=)HTML5引入accept="mimetypes"multiple作为文件输入属性。 See the specs.如果客户端不支持这样的HTML5:太糟糕了

答案 1 :(得分:2)

不传递用户名 - 传递整个会话。这个问题说明了如何:Sessions and uploadify

简而言之,这应该传递给会议:

'script'    : '/upload.php?<?= session_name(); ?>=<?= session_id(); ?>',