问题描述
|
我正在使用uploadify允许图像以表格形式上传。
我遇到的问题如下:
要提交表单,必须先登录用户。
理想情况下,图像将上传到路径/ uploads /
问题是,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:{用户名:\'<?PHP echo $_SESSION[\'username\'] ?>\'
}
在javascript部分和PHP中会收到该变量。但这并不安全。...某人可以修改信息并创建{username:what-he-wants}。
我该如何解决这个问题?
tl; dr-使用uploadify时,如何在后端脚本中使用现有的$ _SESSION变量?
解决方法
不安全的是:
发送带有请求的会话ID,并让服务器使用该会话ID(如果已发送)。
当我使用swf上传器时,就是这样做的。像这样:
if ( !empty($_POST[\'sess\']) ) {
session_id($_POST[\'sess\']);
}
session_start();
在发出请求的页面上,您将获得带有以下内容的会话ID:
<?php echo session_id(); ?>
应该可以,但是也不是很安全。我的建议:不要使用swf上传器=)HTML5引入了accept=\"mimetypes\"
和multiple
作为文件输入属性。参见规格。如果客户端不支持这样的HTML5:太糟糕了
, 不传递用户名-传递整个会话。这个问题说明了如何:会话和上载ify
简而言之,这应该在会话中传递:
\'script\' : \'/upload.php?<?= session_name(); ?>=<?= session_id(); ?>\',