2013-02-17 30 views
0

我們有一個免費的分類區,在其中可以上傳圖片,如何限制用戶顯示錯誤,如果上傳的php文件如何限制文件類型在上傳到不具有PHP腳本到它

如果$ StrFiles等於text/php,那麼我們嘗試了一下,它沒有執行,並且仍然上傳了一個php文件。如何阻止它。 PL建議

 $FILE_PATH="uploads/classifieds/ads"; 
     $StrFiles=""; 
     $StrFiles2=""; 

     if((file_exists($_FILES['pic']['tmp_name']))){ 
      if($_FILES['pic']['name']!="") 
       { 
       $dt = time()."s"; 
       if(!JFile::upload($_FILES['pic']['tmp_name'],$FILE_PATH.JFile::makeSafe($dt."_".$_FILES['pic']['name']))){ 
         return JError::raiseWarning(500, "Unable To upload File".$_FILES['pic']['name']); 
        }else{ 
         $StrFiles=JFile::makeSafe($dt."_".$_FILES['pic']['name']); 
        } 
       } 
     } 
     if((file_exists($_FILES['pic2']['tmp_name']))){ 
      if($_FILES['pic2']['name']!=""){ 
       $dt = time()."s"; 
       if(!JFile::upload($_FILES['pic2']['tmp_name'],$FILE_PATH.JFile::makeSafe($dt."_".$_FILES['pic2']['name']))){ 
         return JError::raiseWarning(500, "Unable To upload File".$_FILES['pic2']['name']); 
        }else{ 
         $StrFiles2=JFile::makeSafe($dt."_".$_FILES['pic2']['name']); 
        } 
       } 
     } 

      if ($StrFiles =="text/php") 
      { 
      echo "No PHP files<br>"; 
      $ok=0; 
       } 

      if ($StrFiles2 =="text/php") 
       { 
      echo "No PHP files<br>"; 
      $ok=0; 
       }    


    if($StrFiles){ 
     $pic= $StrFiles; 
    } 
    if($StrFiles2){ 
     $pic2= $StrFiles2; 
    } 
+2

一個簡單的上下的方式是 - 嘗試從上傳的圖片創建的圖像。如果失敗了,它不是一個合適的圖像。 – MyStream 2013-02-17 13:21:38

回答

0

由於您使用的Joomla,你可以定義所有允許的圖像擴展名列表,然後用JFile::getExt($filename)檢查分機屬於允許的。

例如

$allowed = array('jpg', 'png'); 
if(in_array(JFile::getExt($filename), $allowed) { 
} 
+0

可能不是最好的主意,因爲你可以給任何文件一個可接受的圖像擴展名。 – Aleph 2013-02-17 13:27:48

+0

你可以,但至少這樣的代碼不會在服務器上執行 – 2013-02-17 13:28:48