【问题标题】:Passing $_SESSION in uploadify在 uploadify 中传递 $_SESSION
【发布时间】:2011-09-09 15:35:33
【问题描述】:

我正在使用 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 允许您将 $_POST 信息以 JSON 格式传递给 php 脚本。

所以我可以这样做

脚本数据:{用户名:'&lt;?php echo $_SESSION['username'] ?&gt;'}

在 javascript 部分和 php 将接收变量。但这并不安全....有人可以对这些信息进行调整并制作 {username:what-he-wants}。

我该如何解决这个问题?

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

【问题讨论】:

    标签: php uploadify


    【解决方案1】:

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

    简而言之,这应该在会话中传递:

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

    【讨论】:

    • 谢谢你。这两个答案都有效,所以我会接受另一个,因为它是之前发布的。但是非常感谢,仍然。
    【解决方案2】:

    这是不安全的:

    随请求发送会话 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:太糟糕了

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2016-04-28
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多