Nasıl bir kullanıcı olmadığını test etmek yüklemek için bir dosya SEÇİLMİŞ var?

5 Cevap php

Bir sayfada, i var:

if (!empty($_FILES['logo']['name'])) {
    $dossier     = 'upload/';
    $fichier     = basename($_FILES['logo']['name']);
    $taille_maxi = 100000;
    $taille      = filesize($_FILES['logo']['tmp_name']);
    $extensions  = array('.png', '.jpg', '.jpeg');
    $extension   = strrchr($_FILES['logo']['name'], '.');

    if(!in_array($extension, $extensions)) {
        $erreur = 'ERROR you  must upload the right type';
    }

    if($taille>$taille_maxi) {
         $erreur = 'too heavy';
    }

    if(!empty($erreur)) {
      // ...
    }
}

'Eğer doğru türünü yüklemek gerekir error': Sorun kullanıcıların LOGO yükleyerek OLMADAN bilgilerini düzenlemek istiyorsa, bu bir hata tutarsa, bir

So, if a user didn't put anything in the inputbox in order to upload it, i don't want to enter in these conditions test.

i tested : if (!empty($_FILES['logo']['name']) and if (isset($_FILES['logo']['name'])

ama her ikisi de çalışmak gibi değildir.

Herhangi bir fikir?

edit: belki ben de yüklemek için bir dosya seçtiyseniz, çünkü şu anda o yüklemek için bir dosya seçmezse ben, test etmek istiyorsan, o bir logo yükledi olmadığını test etmek istemiyorum, o kadar açık değildi, php o doğru biçimi ile yüklemek gerektiğini söyleyen bir hata yükseltir.

teşekkürler.

5 Cevap

Sen ile kontrol edebilirsiniz:

if (empty($_FILES['logo']['name'])) {
    // No file was selected for upload, your (re)action goes here
}

Yoksa sadece yükleme alanı daha sonra boş bir dize ("") hiç upload formu teslim önlemek için diğer bir değeri olan her yükleme / gönderme düğmesi sağlayan bir javascript inşaat kullanabilirsiniz.

file handling yaklaşık php belgelerinde bir bölüm vardır. Sen find çeşitli hataları kontrol edebilirsiniz olacak ve bunlardan biri

UPLOAD_ERR_OK
    Value: 0; There is no errveya, the file uploaded with success.
<...>
UPLOAD_ERR_NO_FILE
    Value: 4; No file was uploaded.

Sizin durumunuzda gibi kodu gerekir

if ($_FILES['logo']['errveya'] == UPLOAD_ERR_OK) { ... }

veya

if ($_FILES['logo']['errveya'] != UPLOAD_ERR_NO_FILE) { ... }

You should consider checking (and probably providing appropriate response fveya a user) fveya other various errveyas as well.

Sen is_uploaded_file($_FILES['logo']['tmp_name']) dosyanın gerçekten bir POST aracılığıyla yüklenen emin olmak için kullanmalısınız.

I if (file_exists ($ _FILES ['logo'] ['tmp_name'])) test etmek ve eğer o inşaat görecekti.

Ya da, daha approperately (teşekkürler Baloo'nun): if (is_uploaded_file ($ _FILES ['logo'] ['tmp_name']))

if ($_FILES['logo']['error'] === 0)

is the only right way