php soru kontrol resimlerim biçimi

2 Cevap

Ben resim biçimini kod kontrol sorun var:

// 0 means a successful transfer
if ($_FILES["fname"]["error"] > 0) {
    $_FILES["fname"]["name"] = "holder.jpg";        // line 3
    $imgData = $hyperlink.$_FILES["fname"]["name"]; // line 4
} else {
    $imgData = $hyperlink.$_FILES["fname"]["name"];
}

// Only accept files of jpeg format
$img = substr($imgData, 37);
$_FILES["fname"]["type"] = $img;

print "****";

print $_FILES["fname"]["type"];

//print $img;

print "****";

// only accept jpg images pjpeg is for Internet Explorer.. should be jpeg
if (!($_FILES["fname"]["type"] == "image/pjpeg") || !($_FILES["fname"]["type"== "image/jpg")) {
    print "I only accept jpg files!"; 
    exit(0);
}

Her zaman ilk if statment (satır 3 ve 4) gider. Ben resim yüklemek yok ve biçimini kontrol etmek için if statment gider ve ne zaman bana verirse I only accept jpg files. Benim tahminim o diyor ki dizge olarak kabul I only accept jpg files.

2 Cevap

!($_FILES["fname"]["type"] == "image/pjpeg") || !($_FILES["fname"]["type"== "image/jpg")

aynıdır

!( ($_FILES["fname"]["type"] == "image/pjpeg") && ($_FILES["fname"]["type"== "image/jpg") )

Bu formda daha iyi koşul her zaman doğrudur yani $ _FILES ["fname"] ["type"] "image / pjpeg" ve "image / jpeg" ikisi ile eşit olamaz görebilirsiniz.

Bu teslim onun mime tipi bir jpeg değildi ki, dosya ASLINDA bir jpeg olduğunu kontrol etmek daha iyi olurdu. exif_imagetype() fonksiyonu, ya da getimagesize() içine bakın.

<?php

  if (exif_imagetype($_FILES['fname']['tmp_name']) != IMAGETYPE_JPEG) {
    echo "Image is not a JPEG!";
    exit;
  }

Exif_imagetype mevcut değilse, getimagesize çalışması gerekir:

<?php
   if ((list($width, $height, $type, $attr) = getimagesize($_FILES['fname']['tmp_name'])) !== FALSE) {
     if ($type != IMAGETYPE_JPEG) {
       echo "Image is not a JPEG!";
       exit;
     }
   }