2015-04-01 25 views
0

中不正確我遇到getimagesize()問題。它發生在我上傳圖片時,但僅在有時。來自getimagesize(寬度和高度)的結果在PHP

腳本應檢查頭像(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

請始終在問題中添加您的代碼 - 如果粘貼板關閉或粘貼被刪除,則該問題將不再被未來的讀者閱讀。根據我的編輯,編輯器中有格式化工具來呈現代碼。我們喜歡在原始問題解決後很久才能閱讀的問題 - 有時一個解決方案對於多個人來說是有用的! – halfer 2015-04-01 16:21:45

+1

好的,謝謝你添加代碼:) – MRIOT 2015-04-01 16:22:57

回答

0

你不檢查在上傳錯誤,這是上傳文件時,你應該看的第一件事。

檢查/測試$_FILES['uploadAvatar']['error']在做任何事情之前$_FILES陣列。

See documentation

+0

是的,它還沒有完成。但我認爲這將是有益的:) – MRIOT 2015-04-01 16:01:58