Php move_上传的_文件中的动态路径不适用于我

Php move_上传的_文件中的动态路径不适用于我,php,Php,我是PHP的新手。我想创建一个新文件夹,并在提交表单时将图像添加到该文件夹中。按预期创建用户名为的新文件夹,但图像不会插入到特定文件夹中 附加php和表单以供审阅。如果有人帮助我,那将非常有帮助 如果我将$username更改为move_uploaded_文件中的现有文件夹名称,则会插入图像。看起来我在映射路径时遗漏了什么。正在寻找解决方案。谢谢 <?php include("header.php"); error_reporting(0); if(isset($

我是PHP的新手。我想创建一个新文件夹,并在提交表单时将图像添加到该文件夹中。按预期创建用户名为的新文件夹,但图像不会插入到特定文件夹中

附加php和表单以供审阅。如果有人帮助我,那将非常有帮助

如果我将$username更改为move_uploaded_文件中的现有文件夹名称,则会插入图像。看起来我在映射路径时遗漏了什么。正在寻找解决方案。谢谢

    <?php include("header.php");
    error_reporting(0);

    if(isset($_POST['add_menu_submit']))
    {
    $gid=$_REQUEST['id']; 
    $qry1="select * from users";
    $exec1=mysql_query($qry1);
    $num1=mysql_num_rows($exec1);



$img1=$_FILES['image1']['name'];
$img2=$_FILES['image2']['name'];
$img3=$_FILES['image3']['name'];
$username=$_POST['username'];

 $cid=$_REQUEST['id']; 

$sqd= "insert into users(username,vanity,image1,image2,image3)values
('$username','$_POST[vanity]','$img1','$img2','$img3')";
$exe=mysql_query($sqd); 
$msg='Product Have been Added sucessfully!!!'; 
header("location:manage_collection.php");
if (!file_exists($username)) {
  mkdir($username, 0777, true);
}

move_uploaded_file($_FILES['image1']['tmp_name'],$username/$_FILES['image1']['name']);
move_uploaded_file($_FILES['image2']['tmp_name'],$username/$_FILES['image2']['name']);
move_uploaded_file($_FILES['image3']['tmp_name'],$username/$_FILES['image3']['name']);

}




?>


<section id="main" class="column">
        <div class="clear"></div>
        <form action="add_collection.php" name="product" method="post" enctype="multipart/form-data">
        <article class="module width_full">
        <?php echo $msg; ?>
            <header><h3>Add New Collection</h3></header>
                <div class="module_content">
                <div style="color:#FF0000"> <?php if(isset($error)) { echo $error; } ?> </div>
                        <fieldset>
                        <label>Pagename</label>
                        <input type="text" name="username" value="">
                        </fieldset>
                        <fieldset>
                        <label>Vanity</label>
                        <input type="text" name="vanity" value="">
                        </fieldset>

                        <fieldset>
                            <label>Image</label>
                            <input type="file" name="image1" id="image">
                        </fieldset>
                        <fieldset>
                            <label>Image</label>
                            <input type="file" name="image2" id="image">
                        </fieldset>
                        <fieldset>
                            <label>Image</label>
                            <input type="file" name="image3" id="image">
                        </fieldset>
                        <!--<fieldset>
                            <label>status</label>
                            <select name="status" id="status" size="1">
                            <option value="Active">Active</option>
                            <option value="Inactive">Inactive</option>
                            </select>
                        </fieldset>-->


            <footer>
                <div class="submit_link" style="float:inherit;" align="center">
                    <input type="submit" value="Submit" class="alt_btn" name="add_menu_submit"> &nbsp;
                    <input type="reset" value="Reset" class="alt_btn1" >
                </div>
            </footer>

            </div>
        </article><!-- end of post new article -->
        </form>
    </section>


    <?php include("footer.php"); ?>

请使用一个移动文件:)


除了我之前关于使用
move\u上传的\u file()
的评论外,使用
$\u POST['username']
直接进入
mkdir()
和SQL注入漏洞:

move_uploaded_file($_FILES['image1']['tmp_name'], $username . '/' . basename($_FILES['image1']['name']));
问题是
$username/$\u文件['image1']['name']
是一个除法,而不是字符串连接


其次,你不应该使用客户提供的完整路径;这就是为什么我添加了
basename()
来限制路径,比如
'../../../../../etc/php.ini'

你应该检查
move\u uploaded\u file()
的返回值。另外,将
$\u POST['username']
直接传递到
mkdir()
中是自找麻烦。最后,使用准备好的语句,因为此脚本易受SQL注入攻击。
move_uploaded_file($_FILES['image1']['tmp_name'], $username . '/' . basename($_FILES['image1']['name']));