0

オフィス用の簡単なアップロード ポータルを構築しています。アップロードされたアイテムを /uploads という名前のフォルダーに渡すようにコーディングすることに成功しましたが、いくつかのサブフォルダーから選択するドロップダウンを追加して、そこにあるものをより適切に整理できるようにしたいと考えています。

これは私のHTMLです

<html>
    <body>
        <form action="upload.php" method="post" enctype="multipart/form-data">
            <label for="file">Filename:</label>
            <input type="file" name="file" id="file"><br>
            <select name="Folder">
                <option value="OurPhoto">Our Photos</option>
                <option value="StockPhoto">Stock Photos</option>
                <option value="Video">Videos</option>
                <option value="Document">Documents</option>
                <option value="Other">Other</option>
            </select>
            <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html>

そして、これはupload.php用の私のPHPです

if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";

    if (file_exists("upload/" . $_FILES["file"]["name"])) {
        echo $_FILES["file"]["name"] . " already exists. ";
    }
    else {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
        echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
    }
}

サブフォルダーの名前は、MCPhoto、StockPhoto、Video、Documents、および Other です。私のPHPの知識はちょっと弱いので、ここからどこへ行くべきか本当にわかりません..

4

4 に答える 4

1

変数から Folder フィールドの値を取得し、$_POSTそれをアップロード コードに含める必要があります。

if (file_exists("upload/".$_POST["Folder"] . "/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " already exists. ";
  }
else
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  "upload/" . $_POST["Folder"] . "/" . $_FILES["file"]["name"]);
  echo "Stored in: " . "upload/" . $_POST["Folder"] . "/" . $_FILES["file"]["name"];
  }
}
于 2013-09-24T19:49:05.443 に答える
1

次のようなものを使用できます。

$folder = $_POST['Folder'];

// sanitise $folder

$location = 'upload/' . rtrim($folder, '/') . '/' . $_FILES['file']['name'];

if(file_exists($location)) {
    echo $_FILES['file']['name'] . ' already exists.';
}
else {
    move_uploaded_file($_FILES['file']['tmp_name'],  $location);
    echo 'Stored in: ' . $location;
}

Folderで使用する前に、入力が安全であることを完全に確認してください$location

于 2013-09-24T19:51:52.090 に答える
0

このコードにはセキュリティ ホールが多すぎます。これを試みる前にもっと多くの調査を行うべきだと私が言うとき、私はあなたを助けようとしています.

少なくとも読んでください: http://blog.insicdesigns.com/2009/01/secure-file-upload-in-php-web-applications/

サーバーのセキュリティが危険にさらされているため、専門家を雇うことをお勧めします。

于 2013-09-24T19:58:45.650 に答える