Yükleme hata yönetimi
$_FILES['file']['error'] kodlarını okuyup anlamlı hata mesajları vermeyi öğrenirsin.
Yükleme hata kodları
Her yükleme bir hata kodu taşır. Bu kod $_FILES['avatar']['error'] alanında bulunur. Kod 0 (UPLOAD_ERR_OK) ise yükleme başarılıdır; başka bir değer ise bir sorun vardır.
Hata kodlarını bilmek, kullanıcıya doğru mesajı vermene yardımcı olur. Örneğin 'dosya çok büyük' ile 'dosya gönderilmedi' farklı durumlardır ve farklı mesajlar gerektirir.
PHP bu kodları UPLOAD_ERR_* sabitleriyle tanımlar. Sabitleri kullanmak (0 yerine UPLOAD_ERR_OK) kodu daha okunabilir yapar.
Sık karşılaşılan sabitler
En sık karşılaşılan hata sabitleri şunlardır:
UPLOAD_ERR_OK(0): hata yok, yükleme başarılıUPLOAD_ERR_INI_SIZE(1):upload_max_filesizeaşıldıUPLOAD_ERR_PARTIAL(3): dosya kısmen yüklendiUPLOAD_ERR_NO_FILE(4): dosya seçilmedi
Bunları bir match veya dizi ile mesajlara çevirirsin. Örneğin $messages = [UPLOAD_ERR_OK => 'Hata yok', ...]. Sonra kodu $messages[$code] ?? 'Bilinmeyen' ile okursun; böylece her koda anlamlı bir açıklama bulursun.
Uygulama errorMessage fonksiyonu
Bir errorMessage(int $code): string fonksiyonu yaz. İçinde $messages dizisini UPLOAD_ERR_OK, UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_PARTIAL ve UPLOAD_ERR_NO_FILE anahtarlarıyla tanımla (değerler sırayla 'Hata yok', 'php.ini sınırı aşıldı', 'Kısmi yükleme', 'Dosya yok'). Sonra return $messages[$code] ?? 'Bilinmeyen: ' . $code döndür. En son UPLOAD_ERR_OK, UPLOAD_ERR_INI_SIZE ve UPLOAD_ERR_NO_FILE için echo errorMessage(...) . "\n" çağır.
Örnek çözümü göster
' + code ile döndür. Üç kodu sırayla echo ile yazdır.
Örnek çözüm:
<?php
// Hata kodundan mesaj üret
function errorMessage(int $code): string {
$messages = [
UPLOAD_ERR_OK => "Hata yok",
UPLOAD_ERR_INI_SIZE => "php.ini sınırı aşıldı",
UPLOAD_ERR_PARTIAL => "Kısmi yükleme",
UPLOAD_ERR_NO_FILE => "Dosya yok",
];
return $messages[$code] ?? "Bilinmeyen: " . $code;
}
echo errorMessage(UPLOAD_ERR_OK) . "\n";
echo errorMessage(UPLOAD_ERR_INI_SIZE) . "\n";
echo errorMessage(UPLOAD_ERR_NO_FILE) . "\n";
Kendini test et
-
Sabitleri anlamlarıyla eşleştir
- UPLOAD_ERR_OK
- Hata yok
- UPLOAD_ERR_INI_SIZE
- php.ini sınırı
- UPLOAD_ERR_PARTIAL
- Kısmi yükleme
- UPLOAD_ERR_NO_FILE
- Dosya gönderilmedi
-
Hangi sabit başarılı yüklemeyi belirtir?
- UPLOAD_ERR_INI_SIZE
- UPLOAD_ERR_OK
- UPLOAD_ERR_PARTIAL
- UPLOAD_ERR_NO_FILE
Cevabı göster
UPLOAD_ERR_OK — Doğru. UPLOAD_ERR_OK hata yok demektir.
-
Başarı kontrolü
if ($file['error'] === ____) { return 'Tamam'; }Cevabı göster
if ($file['error'] === UPLOAD_ERR_OK) { return 'Tamam'; }