0

アップロードされた画像のファイル拡張子を確認している間、私のコードは常に false を返し、画像がアップロードされません。アップロードされた画像には適切な拡張子が付いています。

私の質問は、なぜファイルを受け入れないのですか? ファイルにチェックが入ればアップロード成功です。

参考までに、他にもチェックがありますので、これが私の唯一のセキュリティ チェックであることを心配しないでください。これがすべての問題を引き起こしているというだけです。

$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$pre_ext = explode(".", $tmp_name);
$ext = end($pre_ext);   

if (getimagesize($tmp_name) != false)
{
    //below is the check that is causing all the problems
    if ($ext == "PNG" || $ext == "png" || $ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG" || $ext == "GIF" || $ext == "gif"){
        if ($_FILES['file']['error'] == 0)      
        {
            move_uploaded_file($tmp_name, 'post_images/' . $name);
        }       
    }   
}
4

1 に答える 1

2
$name = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$pre_ext = explode(".", $name);

それを修正する必要があります。拡張子だけでなく、ファイル自体を確認することをお勧めします。tmp_name はサーバー上の一時的な名前で、通常は次のようなものです/tmp/random8y7ofad9

于 2012-09-16T02:42:38.437 に答える