Qt& PHP:使用附加密钥上传文件

时间:2013-02-28 13:19:19

标签: php qt post upload

我已经设法将我的代码用于文件上传脚本到我的服务器工作。 这是一段非常愚蠢的代码,目前接受每个文件。 这意味着,访问该脚本的每个人都可以立即上传文件。

这是我当前的PHP代码,它将接收POST数据并处理请求:

<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir.basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
{
    echo "OKAY";
}
else
{
    echo "NOT SO OKAY";
}
?>

为了防止世界其他地方将文件上传到我的服务器,我将发送带有请求的MD5-Hash密钥,并且基本上只是在代码周围包含“if($ key == $ serverkey)”。

所以看起来应该是这样的:

<?php
if ($_POST['key'] == $serverkey)
{
    $uploaddir = '/var/www/uploads/';
    $uploadfile = $uploaddir.basename($_FILES['userfile']['name']);

    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
    {
        echo "OKAY";
    }
    else
    {
        echo "NOT SO OKAY";
    }
}
else
{
    echo "WRONG KEY";
}
?>

我现在的问题是......如何以正确的方式将密钥附加到请求中,以便我可以访问“$ _POST ['key']”以及之后的文件? 我不希望密钥意外地应用于文件数据。

该文件在Qt中附加了以下代码:

data.append(QString("--" + bound + "\r\n").toLatin1());
data.append("Content-Disposition: form-data; name=\"" + url + "\"\r\n\r\n");
data.append(scriptName + "\r\n");
data.append("--" + bound + "\r\n");
data.append("Content-Disposition: form-data; name=\"" + inputName + "\"; filename=\"" + inf.fileName() + "\"\r\n");
data.append("Content-Type: application/octet-stream\r\n\r\n");
if (!file.open(QIODevice::ReadOnly)) return;
data.append(file.readAll());
data.append("\r\n");
data.append("--" + bound + "--\r\n");

文件是否已全部限制在边界?

如果我只是添加另一行,那么PHP是否知道两者之间的区别:

data.append("&key=" + key);

我需要“&amp;”吗? 我在谷歌上找不到任何东西...有严格的文件上传或一些值,如通过POST发送的密钥,但从来没有在同一个请求。 谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

根据要求,我的评论作为答案。

由于您正在检查$_POST,因此您必须在请求中添加其他POST参数。我想,您也可以在PHP脚本中查看$_GET并将?key=md5stuff附加到您的网址。