奇怪的图像PHP验证

时间:2011-04-15 18:51:35

标签: php validation

我有这个脚本用于图像验证。例如,对于500 kb或1.5 mb的图像,可以正常工作,但是如果我尝试使用4mb或6的图像,则给出错误格式无效而不是“尺寸大”。为什么呢?

$imageData = @getimagesize($_FILES["userfile"]["tmp_name"]);

        if($imageData === FALSE || !($imageData[2] == IMAGETYPE_GIF || $imageData[2] == IMAGETYPE_JPEG || $imageData[2] == IMAGETYPE_PNG)) {
            echo "<li>Invalid format</li>";
            die();
        }
        else {
            if($_FILES["userfile"]["size"] >= 2000000) {
                echo "<li>The size large</li>";
                die();
            }
                else {
           //mystuff
}

谢谢

3 个答案:

答案 0 :(得分:1)

您没有检查文件上传是否成功。 PHP有一个内存限制,适用于上传的文件,你的“大”图像很可能超过这个限制。您应该检查上传内容:

if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) {
   ... uploaded ok ...
} else
   echo "File upload failed on 'userfile' with error: " . $_FILES['userfile']['error'];
}

答案 1 :(得分:1)

您可能还想检查php.ini中的post_max_size和upload_max_filesize。如果您尝试上传的文件太大,我相信不会填充_FILES数组。

答案 2 :(得分:0)

使用$ _FILES ['size'] .. getimagesize对于大图像来说非常慢