Ne yüklenen dosya kontrol etmek için benim If-deyimi ile yanlış?

5 Cevap

Yüklenen dosya istiyorum görüntü tipi olup olmadığını test etmek için çalışıyorum. Bir gif, jpeg, png değilse, o "Problem" yankı gerekir. Bu kod yürütmesine zaman, o zaman bir sorun var diyor. Ne ifadem varsa nesi var?

$uploadfile_type=$_FILES['userfile']['type'];

    if ( ($uploadfile_type !='image/gif') || ($uploadfile_type !='image/jpeg') 
    || ($uploadfile_type !='image/png'))  
    {
        echo 'Problem: file is not a gif or jpeg or png!';
        exit;
    }

Ben sadece resmin bir tür kontrol ettiğimde bu kod çalışır. Örn: (! $ Uploadfile_type = 'image / gif') if -> Bu deyimi çalışmak istiyorsunuz ama ben bir ekleme VEYA öyle değil zaman.

5 Cevap

Kullandığınız OR (||) kullanarak VE gerektiği zaman (&&). Konum Bunu and, bir JPG and, bir PNG değil değil bir GIF değilse bir sorun var demek istiyorum. Eğer bir kerede tüm 3 tip olmayı başardı dosyanın çeşit olsaydı veya bu bir sorun olduğunu söyleyemem tek yoludur.

Gider bir bilmece var:

I have two coins in my pocket. Their total value is thirty cents. One of them is not a nickel. What are they?

Cevabı ise çeyrek ve bir nikel olmasıdır - çeyrek "bunlardan biri bir nikel değildir" koşulu karşılar. Bu karşı karşıya sorunun türüdür. Every dosyası not a gif veya not a jpeg - hatta GIF ve JPEG. Gif not jpegs, ve JPEG not gifs vardır. Diğerleri söylediler gibi Yani, bunun yerine OR ve AND kullanmanız gerekir.

Sen kabul mime bir listesini tanımlamak gerekir:

$accepted_types = array(
    'image/gif',
    'image/jpeg',
    'image/png',
);

$uploadfile_type=$_FILES['userfile']['type'];

if (!in_array($uploadfile_type, $accepted_types))
{
    echo 'Problem: file is not a gif or jpeg or png!';
    exit;
}

I hope this will help, Jerome Wagner

Kullanmak VE yerine OR gerekir:

if ( ($uploadfile_type !='image/gif') && ($uploadfile_type !='image/jpeg')
  && ($uploadfile_type !='image/png'))  

Bir dosya sadece hiç tek tip olacak beri VEYA hep başarısız olur.

Chad cevabı hakkıdır.

Eğer kodu kısaltmak ve daha güzel yapmak istiyorsanız:

if (!in_array($uploadfile_type, array('image/gif', 'image/jpeg', 'image/png'))
{
  // bad
}