我正在使用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变量?
答案 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(); ?>',