PHP,MySQL - 我验证文件类型上传,但它仍然插入数据库。我的代码有什么问题?

时间:2016-12-10 15:20:12

标签: php mysql codeigniter

我正在做php上传多个文件并重命名它们。所以我使用数组输入字段名称并使用for循环将每个文件重命名为date + ordinal number suffix。

我也验证了文件类型,它可以防止成功上传其他文件类型到目录。但它仍然将文件名插入数据库。我的代码有什么问题?

<form action="upload.php"  method="post" enctype="multipart/form-data">
            Username :
            <input type="text" name="username" />
            Image 1 :
                <input type="file" name="images[]" />
                <br>

            image 2 :
                <input type="file" name="images[]" />
</form>

在upload.php页面

if(isset($_POST['submit']))
{
      $count=count($_FILES["images"]["name"]);

      $arr_newname = array();

    for($i=1; $i <= $count; $i++)
    {   
        if ((($_FILES["images"]["type"][$i-1] == "image/gif")
             || ($_FILES["images"]["type"][$i-1]  == "image/jpeg")
            || ($_FILES["images"]["type"][$i-1]  == "image/png"))
            && ($_FILES["images"]["size"][$i-1] < 2000000)) //2 MB
        {

             if ($_FILES["images"]["error"][$i-1]  > 0)
             {
                 echo "File Error : " . $_FILES["images"]["error"][$i]  . "<br />";
             }
             else 
             {


                if (file_exists("path/to/".$_FILES["images"]["name"][$i-1] ))
                {
                   echo "<b>".$_FILES["images"]["name"][$i-1]  . " already exists. </b>";
                }
                else
                {
                   $newname = date('Y-m-d')."_".$i.".jpg";
                   $arr_newname[$i-1] = $newname;
                   move_uploaded_file($_FILES["images"]["tmp_name"][$i-1] , "path/to/".$newname);

                   $data = array(
                     'username' => $_POST['username'],
                     'my_pic'.$i => $arr_newname[$i-1],
                   );
                   $this->db->insert('oav_album', $data);       
                 }
               }
             }
                else
                {
                   echo "Invalid file" ;
                   exit();
                } 
          }
       }

0 个答案:

没有答案