奇怪的图像php验证

奇怪的图像php验证,php,validation,Php,Validation,我有一个图像验证脚本。例如,对于500 kb或1.5 mb的图像可以正常工作,但如果我尝试使用4mb或6 mb的图像,则会给出错误无效的格式,而不是“大尺寸”。为什么? $imageData=@getimagesize($\u文件[“用户文件”][“tmp\u名称]); if($imageData==FALSE | |!($imageData[2]==IMAGETYPE_GIF | | |$imageData[2]==IMAGETYPE_JPEG | |$imageData[2]==IMAGET

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

$imageData=@getimagesize($\u文件[“用户文件”][“tmp\u名称]);
if($imageData==FALSE | |!($imageData[2]==IMAGETYPE_GIF | | |$imageData[2]==IMAGETYPE_JPEG | |$imageData[2]==IMAGETYPE_PNG)){
回显“
  • 无效格式”
  • ”; 模具(); } 否则{ 如果($_文件[“用户文件”][“大小”]>=2000000){ 回声“
  • 大的尺寸”
  • ”; 模具(); } 否则{ //糠秕 }

    谢谢

    使用$\u文件['size']…getimagesize对于大型图像非常慢

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

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

    您可能还需要检查您的post_max_大小并在php.ini中上载_max_文件大小。如果您尝试上载的文件太大,则我相信将不会填充_文件数组。

    什么是
    @getimagesize
    呢?
    if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) {
       ... uploaded ok ...
    } else
       echo "File upload failed on 'userfile' with error: " . $_FILES['userfile']['error'];
    }