简体   繁体   English

getimagesize(宽度和高度)的结果在PHP中不正确

[英]Results from getimagesize (width and height) aren't correct in PHP

I got a problem with getimagesize() . 我对getimagesize()有问题。 It occurs when I upload an image but.. only sometimes. 当我上传图片时会发生这种情况。

The script should check the image size for an avatar (profile-pic). 该脚本应检查头像的图像大小(个人档案图片)。 If lower or equals 200px X 200px then it's ok. 如果小于或等于200px X 200px,则可以。

I'm not done with the script yet, some security things are missing. 我还没有完成脚本,缺少一些安全性。 But I'm totally confused why this happens and why this only sometimes happens. 但是我完全困惑为什么会发生这种情况以及为什么这种情况有时只会发生。

My script: 我的剧本:

//UpdateAvatar
if(isset($_FILES['uploadAvatar']) AND (isset($_SESSION['user']) OR isset($_SESSION['dev']))) {
    //Upload
    $uploadDir = "../img/avatar/";//relative path (we're in php folder [one step back then img])
    $avatarExtension = pathinfo($_FILES['uploadAvatar']['name'], PATHINFO_EXTENSION);//avatar extension (jpg,png,gif)
    if($avatarExtension == "gif" || $avatarExtension == "jpeg" || $avatarExtension == "jpg" || $avatarExtension == "png") {
        $_FILES['uploadAvatar']['name'] = $LoginName."_avatar".".".$avatarExtension;//build new name (max 4 different avas [png/gif/jpg/jpeg] for one user)
        $uploadFile = $uploadDir.basename($_FILES['uploadAvatar']['name']);//'name' is the key (index) of the array
        $uploadFileRes = getimagesize($uploadFile);//resolutionArray = 0 => width | 1 => height
        if(($uploadFileRes[0] <= 200) && ($uploadFile[1] <= 200)) {//250x250

            if(move_uploaded_file($_FILES['uploadAvatar']['tmp_name'], $uploadFile)) {
                //Uploaded
                $newAvatarSql = "UPDATE UserLogIn SET Avatar = '$uploadFile' WHERE ID = '$rcSID'";
                mysql_query($newAvatarSql);
                $Avatar = $uploadFile;
            } else {//UploadFailed
                $ucfg_error_msg = "<span title=\"ServerSide failure\" onClick=\"killErrMsg(this)\" class=\"ucfgErrMsg\">Upload failed!</span>";
            }

        }else {//FileResolution  >(200x200)
            $errImageSize =  $uploadFileRes[0]." x ".$uploadFileRes[1];
            $ucfg_error_msg = "<span title=\"Your Avatar had: $errImageSize\" onClick=\"killErrMsg(this)\" class=\"ucfgErrMsg\">Avatar resolution was<br />greater than 200x200!</span>";
        }
    }else {//NotSupported Extension
        $ucfg_error_msg = "<span title=\"Supported: *.png | *.jpg | *.gif\" onClick=\"killErrMsg(this)\" class=\"ucfgErrMsg\">File-Extension not supported!</span>";
    }
}else {//NotLoggedIn or no Avatar submitted or "fresh Script" => No real error // but blank for JS
    $ucfg_error_msg = "<span class=\"ucfgErrMsg\"></span>";
}

You are not checking for errors in the upload, this is the first thing you should be looking at when uploading files. 您无需检查上传中是否有错误,这是上传文件时应注意的第一件事。

Check/test $_FILES['uploadAvatar']['error'] before doing anything with the $_FILES array. 在对$_FILES数组执行任何操作之前,请检查/测试$_FILES['uploadAvatar']['error']

See documentation . 请参阅文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM