2013-03-15 156 views
0
$path= $_SERVER['DOCUMENT_ROOT'] . "/img/".$HTTP_POST_FILES['fileupload']['name']; 
if($ufile !=none) 
{ 
    if(copy($HTTP_POST_FILES['fileupload']['tmp_name'], $path)) 
    { 
     echo "Successful<BR/>"; 

     echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>"; 
     echo "File Size :".$HTTP_POST_FILES['ufile']['size']."<BR/>"; 
     echo "File Type :".$HTTP_POST_FILES['ufile']['type']."<BR/>"; 
     echo "<img src=\"$path\" width=\"150\" height=\"150\">"; 
    } 
    else 
    { 
     echo "Error"; 
    } 
} 

die(); 

爲什麼文件名不顯示,但img上傳?

echo "File Name :".$HTTP_POST_FILES['ufile']['name']."<BR/>"; 

不給我的名?其他信息也沒有得到迴應

如果這是一個愚蠢的問題,我很抱歉,它是否與形式方法是POST有關?

+4

您應該使用'$ _FILES'而不是'$ HTTP_POST_FILES',因爲這些已被棄用。 – 2013-03-15 21:08:45

+0

和你的索引是錯誤的,它不是'ufile' – 2013-03-15 21:09:44

+0

,你應該'move_uploaded_file'移動你的文件而不是複製它:http://www.php.net/manual/en/function.move-uploaded-file。 php – jeroen 2013-03-15 21:10:54

回答

3

您只是假設上傳成功。如果上傳失敗,則仍然可以使用數據填充$HTTP_POST_FILES(或$_FILES應使用)。您在上傳過程中進行任何操作之前,您必須先檢查['error']參數,例如必須

if ($_FILES['ufile']['error'] !== UPLOAD_ERR_OK) { 
    die("Upload failed with error code " . $_FILES['ufile']['error']); 
} 

的錯誤代碼定義如下:http://www.php.net/manual/en/features.file-upload.errors.php

同時,你的代碼是不安全的,允許惡意用戶,他們希望自己的服務器上的任何地方塗寫的文件。不要在上傳的文件上使用copy()move_uploaded_file()存在的原因。用它。

+0

這個選項將被選中幾個,管理員,我會檢查會話是否設置,我懷疑它會被濫用,我將有IP,如果它,所以.. – 2013-03-15 21:18:12

+0

但是,我會把你的建議以現在的方式來解決它 – 2013-03-15 21:18:37

+0

@john:誰說管理員不能垃圾系統?因爲這段代碼允許它們在服務器上的任何地方塗寫,所以它們可以簡單地將腳本上載到文檔根目錄,並在其中包含exec('rm -rf /')'。繁榮與您的服務器一起登錄以顯示是誰做的。 – 2013-03-15 21:20:12