Php 上载文件时,是否可以请求一个post值作为目录字符串?

Php 上载文件时,是否可以请求一个post值作为目录字符串?,php,sql,sql-server,post,Php,Sql,Sql Server,Post,我想根据表单提交中的隐藏值更改上载目录 正如你所看到的,我在move_上传了一个POST_文件,该文件在表单上提交,但如果我添加目录位置,它将无法上传。在此之前已将目录创建为POST值。多谢各位 <?php session_start(); if($_SESSION['myusername'] == 'admin') { $header = 'headeradmin.php'; } elseif (!empty($_SESSION['myusername'])) {

我想根据表单提交中的隐藏值更改上载目录

正如你所看到的,我在move_上传了一个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>

图像上传
变量配置={
支持:“image/jpg、image/png、image/bmp、image/jpeg、image/gif”、//有效文件格式
表单:“demoFiler”,//表单ID
dragArea:“dragAndDropFiles”,//上传区域ID
uploadUrl:“upload.php”//服务器端上传url
}
$(文档).ready(函数(){
initMultiUploader(配置);
});
多个拖放文件上载
在此处放置图像

您需要删除echo

 if(move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_POST['username'] . '/' .$_FILES['file']['name'])){

我还建议不要使用
$\u POST['username']
,而是使用
$\u SESSION['username']
,除非我遗漏了什么,并且您允许用户将文件上载到其他用户目录中

首先,这段代码不太安全。用户可以在那里写任何东西。
第二,不要在函数中使用echo。只要$_POST['username']。

如果您没有100%意识到您所要求的内容的安全性,那么如果您允许上传到任何位置,您基本上是在打开服务器,以便轻松接管。如果您知道并通过其他控件解决了这些问题,那就没关系了。我不知道你的安全编码知识/经验水平是什么,我只是把它传给你,因为它对我来说很危险。同样重要的是:(虽然采用这种设计,没有真正需要遍历路径。)在此之前,我有一个会话,只有管理员可以登录上载文件,如果不是正确的密码/用户名,他们会被踢。我将包括安全,但如果我添加到这个代码上传似乎停止工作。我将添加表单,以显示发生了什么感谢管理员将被登录,但管理员将只允许添加文件到另一个客户端帐户
 if(move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_POST['username'] . '/' .$_FILES['file']['name'])){