2011-09-03 1 views
0

アップロードスクリプトで現在問題が発生しています。 ファイルタイプが許可されているかどうかはチェックされません。その理由はわかりません。 誰かが私の問題を見ていますか?PHP:Image Check Extension

   //Reads the image name 
      $image=$_FILES['image']['name']; 

      //If empty 
      if ($image == "") { 
      echo '<div class="box_square form_error" style="margin-bottom:15px; padding:10px; font-size:11px;">Velg et bilde!</div>'; 
      $errors = 1; 
      } 

      //If not empty 
      if ($image) 
      { 
       //Get orgiginal name from client machine 
       $filename = stripslashes($_FILES['image']['name']); 
       //Get the extension 
       $extension = getExtension($filename); 
       $extension = strtolower($extension); 

       //If file extension not known, error. If not, continue 
       if (($extension != "jpg") && ($extension != "jpeg")) 
       { 
        //Error message 
        echo '<div class="box_square form_error" style="margin-bottom:15px; padding:10px; font-size:11px;">Bare JPG og JPEG er tilatte filtyper!</div>'; 
        $errors = 1; 

       } 
+0

何が起こりたくないのですか? –

+0

ファイルタイプがわからないときにメッセージをエコーアウトしません。 – Kaizokupuffball

+0

まあ、 '$ extension 'には何が入っていますか? –

答えて

0

不正なgetExtension($ filename)のようです。しかし、なぜ私はあなたがstripslashesを使用しているのか分かりません。

$extension = strtolower($extension); 

どの程度

echo "the extension used is ".$extension."<br>"; 

ところで、あなたは拡張子ではなく、代わりにmime typeに依存しない表現の正規

preg_match("/\.([^\.]+)$/", $filename, $extension); 
+0

それでも何も出力されませんでした。 – Kaizokupuffball

0

を使用して拡張子を抽出することができます。

+1

....誰かが 'hack.php'を' image/jpeg'としてアップロードしていたのですか? – Jonathon

+0

優秀なポイントジョニー!それらを両方ともチェックする必要があります。 – Charlie

+0

また、サーバーのMIMEタイプを確認して、ブラウザから送信されたものを信じない方がよいでしょう。ただし、ファイルの拡張子を確認することは役に立ちません。あなたのサーバーは何とか多くのファイル拡張子(例えば、php、phtml、php3、php4、php5、py、...)を解析するかもしれません。 – str

0

あなたは適切な拡張子を持つファイルをアップロードしているユーザーを頼りにしています。 もう一つの方法はgetimagesize()です。これはMimeタイプも示します。 http://us3.php.net/manual/en/function.getimagesize.php

list ($width, $height, $type, $html_dim) = getimagesize ($_FILES['image']['tmp_name']); 
echo "\$type:" . var_dump($type); 

私はまた、(EXIF-にimagetypeを参照)、それはあまりにも(私はそれを使ったことがない)ことを行う予定だという。 http://us3.php.net/manual/en/function.exif-imagetype.php