首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中,来自getimagesize (宽度和高度)的结果不正确

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

Stack Overflow用户
提问于 2015-04-01 23:44:34
回答 1查看 317关注 0票数 0

我和getimagesize()有点问题。它发生在我上传图片的时候,但是..只是有时候。

该脚本应检查化身(个人资料图片)的图像大小。如果小于或等于200px x 200px,则可以。

我还没有完成这个脚本,一些安全性的东西被遗漏了。但我完全不明白为什么会发生这种情况,为什么这种情况只会偶尔发生。

我的脚本:

代码语言:javascript
复制
//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>";
}
EN

回答 1

Stack Overflow用户

发布于 2015-04-01 23:50:48

您没有检查上载中的错误,这是您在上载文件时应该注意的第一件事。

在对$_FILES阵列执行任何操作之前,请检查/测试$_FILES['uploadAvatar']['error']

See documentation

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29395184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档