0

フォーム送信の非表示の値に応じて、アップロード ディレクトリを変更したいと考えています。

ご覧のとおり、フォームに送信された move_uploaded_file の後に POST がありますが、ディレクトリの場所を追加するとアップロードに失敗します。ディレクトリは、これより前に POST 値に作成されています。ありがとうございました

<?php
session_start();
if($_SESSION['myusername'] == 'admin')  
  { 
 $header = 'headeradmin.php';
  }
 elseif (!empty($_SESSION['myusername']))
 {
 $header = 'header.php';
 }
 else
  {header("location:../../login");}

require_once '../../connect.php';

$loggedin= $_SESSION['myusername'];
$result = mysql_query("SELECT * FROM login");
if (!$result) { // add this check.
    die('Invalid query: ' . mysql_error());
}

$id = $_GET['id'];


?>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Image upload</title>
<link href='http://fonts.googleapis.com/css?family=Boogaloo' rel='stylesheet' type='text/css'>
<link rel="StyleSheet" href="../../custom.css" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="js/multiupload.js"></script>
<script type="text/javascript">
var config = {
    support : "image/jpg,image/png,image/bmp,image/jpeg,image/gif",     // Valid file formats
    form: "demoFiler",                  // Form ID
    dragArea: "dragAndDropFiles",       // Upload Area ID
    uploadUrl: "upload.php"             // Server side upload url
}
$(document).ready(function(){
    initMultiUploader(config);
});
</script>
<link href="css/style.css" type="text/css" rel="stylesheet" />
</head>
<body lang="en">

<div id="content">

<?php require_once $header;

$sql_query = mysql_query("SELECT * FROM clients WHERE `id` = $id");
while($row = mysql_fetch_array($sql_query))
  {
$username = $row['firstname'] . ' ' . $row['lastname'];

if (!file_exists('uploads/' . $username )) {
    mkdir('uploads/' . $username, 0777, true);
}
  }

 ?>
<h1 class="title">Multiple Drag and Drop File Upload</h1>
<div id="dragAndDropFiles" class="uploadArea">
    <h1>Drop Images Here</h1>
</div>
<form name="demoFiler" id="demoFiler" enctype="multipart/form-data">
<input type="file" name="multiUpload" id="multiUpload" multiple />
<input type="hidden" value="<?php echo $username; ?>" name="username" id="username"/>
<input type="submit" name="submitHandler" id="submitHandler" value="Upload" class="buttonUpload" />
</form>
<div class="progressBar">
    <div class="status"></div></div>
</div>
</body>
</html>

そして、これがフォームがリダイレクトされる場所です。エコーを削除しましたが、機能していないようです。

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
    if(move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_POST['username'] . '/' .$_FILES['file']['name'])){
        echo($_POST['index']);
    }
    exit;
}
?>
4

2 に答える 2

1

まず第一に、このコードはあまり安全ではないということです。ユーザーはそこに何でも書き込むことができます。次に、関数でエコーを使用しないでください。$_POST['username'] だけです。

于 2013-07-28T22:31:35.597 に答える