簡體   English   中英

PHP映像類型驗證

[英]PHP Image Type Validation


我正在嘗試匹配PHP文件上傳的image/type以進行驗證:

<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  $data = [
        // Other POST Variables
     'uploadimageType' => $_FILES['uploadimage']['type']
  ];
  if((strcmp($data['uploadimageType'],'image/jpeg')!=0) || (strcmp($data['uploadimageType'],'image/png')!=0) || (strcmp($data['uploadimageType'],'image/gif')!=0) ) {
     echo 'Invalid Image format';
  }else{
     echo 'Valid';
  } 
?>

用於提交的HTML:

<form action="<?php echo URLROOT; ?>/users/upload" method="post" enctype="multipart/form-data">
  <!-- Other Input Tags -->
  <div class="form-group">
    <label for="uploadimage">Upload Image <sup>*</sup></label>
    <input type="file" name="uploadimage" class="form-control-file <?php echo (!empty($data['uploadimage_err'])) ?  'is-invalid' : ''; ?>">
    <span class="invalid-feedback"><?php echo $data['uploadimage_err']; ?></span>
  </div>
  <!-- Submit Button -->
</form>

現在的問題是,即使我嘗試上傳圖像(.jpg,.png,.gif),它也會顯示無效的圖像格式 我在這里有什么想念的嗎,因為這似乎很簡單但很復雜。 任何建議都會有所幫助。

嘗試這個

$allowed_mime_type_arr = array('image/gif','image/jpeg','image/pjpeg','image/png','image/x-png');
$mime = get_mime_by_extension($_FILES['uploadimage']['name']);
if(in_array($mime, $allowed_mime_type_arr)){
   echo 'Valid Image format';
}else{ 
   echo 'Invalid Image format';
}

如果有條件,這將通過更改起作用。

  $data = [
    'uploadimageType' => 'image/jpeg'
  ];
  if((strcmp($data['uploadimageType'],'image/jpeg')!=0) && (strcmp($data['uploadimageType'],'image/png')!=0) && (strcmp($data['uploadimageType'],'image/gif')!=0) ) {    
            echo 'Invalid Image format';
   }
   else {
       echo 'Valid';
   } 
if($_SERVER['REQUEST_METHOD'] == "POST") {
  $data = ['uploadimageType' => strtolower(pathinfo($_FILES['uploadimage']['name'],PATHINFO_EXTENSION))];
  $ext = array("png","jpg","jpeg");
  if(!in_array($data['uploadimageType'],$ext) ) {
    echo 'Invalid Image format';
  }else {
    echo 'Valid';
  }    
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM