Результаты от getimagesize (ширина и высота) неверны в переполнении стека

У меня проблема с getimagesize(), Это происходит, когда я загружаю изображение, но … только иногда.

Скрипт должен проверить размер изображения для аватара (profile-pic). Если ниже или равно 200px X 200px, тогда все в порядке.

Я еще не закончил со сценарием, некоторые вещи безопасности отсутствуют. Но я совершенно сбит с толку, почему это происходит и почему это происходит только иногда.

Мой сценарий:

//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>";
}

0

Решение

Вы не проверяете наличие ошибок при загрузке, это первое, на что вы должны обращать внимание при загрузке файлов.

Проверка / тест $_FILES['uploadAvatar']['error'] прежде чем делать что-либо с $_FILES массив.

Смотрите документацию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]