2011-05-12 28 views
0

我初始化變量,使用move_uploaded_file函數,然後我寫一個基本的表單用戶將用於上傳他們的照片。我試圖打印出一個error_msg或sucess_msg文件,顯示他們在加載文件時是否成功。沒有人在炫耀。幫幫我!有問題上傳圖片到文件夾

  $error_msg = ""; 
      $success_msg = ""; 
      $name2 = ""; 


     if ($_POST['parse_var'] == "pic"){ 

     if (!$_FILES['fileField']['tmp_name']) { 

      $error_msg = '<font color="#FF0000">ERROR: Please browse for an image before you press submit.</font>'; 

     } else { 

      $maxfilesize = 51200; // 51200 bytes equals 50kb 
      if($_FILES['fileField']['size'] > $maxfilesize) { 

         $error_msg = '<font color="#FF0000">ERROR: Your image was too large, please try again.</font>'; 
         unlink($_FILES['fileField']['tmp_name']); 

      } else if (!preg_match("/\.(gif|jpg|png)$/i", $_FILES['fileField']['name'])) { 

         $error_msg = '<font color="#FF0000">ERROR: Your image was not one of the accepted formats, please try again.</font>'; 
         unlink($_FILES['fileField']['tmp_name']); 

      } else { 

         $newname = $id'.jpg'; 
         $place_file = move_uploaded_file($_FILES['fileField']['tmp_name'], "images/$id/".$newname); 
         $success_msg = '<font color="#009900">Your image has been updated, it may take a few minutes for the changes to show... please             be patient.</font>'; 
      } 

     } // close else that checks file exists 

} 


    <table width="709" align="center" cellpadding="5"> 
      <form action="edit_profile.php" enctype="multipart/form-data" method="post" name="pic1_form" id="pic1_form"> 
      <!-- <tr> 
       <td width="125" class="style7"><div align="center"><strong>Please Do First &rarr;</strong></div></td> 

       </tr>--> 
       <tr> 
      <td width="16%"><?php print "$user_pic"; ?></td> 
      <td width="74%"> 
       <input name="fileField" type="file" class="formFields" id="fileField" size="42" /> 
       50 kb max 
      </td> 
      <td width="10%"> 
       <input name="parse_var" type="hidden" value="pic" /> 
       <input type="submit" name="button" id="button" value="Submit" /> 
      </td> 
      </tr> 
      </form></table> 
+0

爲什麼投下來? – fello

+0

你會得到任何PHP錯誤?你有'error_reporting'啓用? – drudge

+0

注意:您的表單標籤不應該在

之後!它可以在​​或圍繞
,但不是放在哪裏。 – zzarbi

回答

0

我沒有看到任何地方在你迴應錯誤或成功消息的代碼。

+0

你現在正在檢查我沒有看到一個地方,我回復這個消息 – fello

+0

我把它放在表標籤內回顯,它正在打印消息並花費相當長的時間來加載圖像 – fello

1

你要去約如果上傳進行了錯誤的方法檢查:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    ... we're in a post situation, so check if a file was uploaded ... 
    if ($_FILES['fileField']['error'] !== UPLOAD_ERR_OK) { 
     $error_msg = "File upload failed with error code " . $_FILES['fileField']['error']; 
    } else { 
     ... a file was successfully uploaded ... 
     ... process it ... 
     if (!move_uploaded_file(...)) { 
     $error_msg = "Failed to move file"; 
     } 
    } 
} 

檢查表單域的存在是爲了檢查是否有POST進行一個好辦法。您可能會忘記將該字段放入表單中,名稱可能會發生變化等等。檢查REQUEST_METHOD是否有效,因爲無論正在執行什麼類型的請求,該設置都會設置,並且始終是請求(獲取,發佈,頭等...)。

同樣,不要使用用戶提供的文件名來驗證他們上傳了圖像。這個名字可以通過簡單地將一些其他類型的文件重命名爲「whatever.jpg」來輕易僞造。使用服務器端的手段來檢查它是否是一個圖像,如FileInfogetimagesize()

+0

我會檢查這個 – fello

1

我認爲你正在尋找的錯誤是這個:

$newname = $id'.jpg'; 

你忘了一個點,整個腳本剛剛死機:

$newname = $id.'.jpg'; 
+0

我試圖追加它,我認爲它不起作用,儘管我會嘗試做你所說的以防萬一我犯了一個錯誤。 – fello