2015-12-15 102 views
0

我在上傳到服務器時遇到文件類型檢查問題。我的功能不能正常工作。在服務器上總是上傳一切。請幫助我文件類型檢查不起作用

<?php 
session_start(); 
include_once 'dbconnect.php'; 

if (isset($_POST['ulozitzmeny'])) { 

    $valid_mime_types = array(
     "image/gif", 
     "image/png", 
     "image/jpg", 
     "image/jpeg", 
    ); 

    if (in_array($_FILES["file"]["type"], $valid_mime_types)) { 

     $file = rand(1000, 100000) . "-" . $_FILES['file']['name']; 
     $file_loc = $_FILES['file']['tmp_name']; 
     $file_size = $_FILES['file']['size']; 
     $file_type = $_FILES['file']['type']; 
     $folder = "images"; 

     $new_size = $file_size/1024; 
     $new_file_name = strtolower($file); 
     $final_file = str_replace(' ', '-', $new_file_name); 

     if (move_uploaded_file($file_loc, $folder . $final_file)) { 
      $sql = "UPDATE users SET file='$file', type='$file_type', size='$file_size' WHERE username = '$_SESSION[user]'"; 
      mysql_query($sql); 
     } 
    }else{ 

     echo 'error'; 
    } 
} 
?> 
+0

難道你的HTML標籤的形式看起來是這樣的?

有時* enctype *標記丟失。 – workdreamer

+0

是的,我的html標籤形式看起來像這樣。 – iWispy

+0

請檢查您的$ _FILES和$ _POST的輸出,如果您嘗試處理的數據是正確的 – workdreamer

回答

0

有一種更簡單的方法來驗證上傳文件的類型。使用fileinfo獲取正在上傳的文件的擴展名,然後與允許的文件擴展名進行比較。

這裏的參考:

您的代碼應該是這樣的:

// your code 

// valid file extensions 
$valid_extensions = array("gif", "png", "jpg", "jpeg"); 

// get the file extension 
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); // png 

// now check against permissible extensions 
if(in_array($ext, $valid_extensions)){ 
    // allowed 
}else{ 
    // not allowed 
} 

// your code 
+0

現在它正在工作。感謝您的幫助! – iWispy

+0

@iWispy不客氣。 :) –