PHP ile resim yükleme sistemi

PHP ile resim yükleme sistemi 1. ImageController.php Bu dosya, resim yükleme işlemlerini yöneten bir sınıf içeriyor. İşte bu sınıfın temel özellikleri: Resim Yükleme İşlemi (uploadImage metodu): Kullanıcının oturum açıp açmadığını kontrol eder ($_SESSION['user_id']). CSRF token'ını doğrular (CSRFMiddleware::validateToken). Dosyanın geçerli bir resim dosyası olup olmadığını kontrol eder (validateUpload metodu). Dosya boyutunu ve türünü kontrol eder (JPEG, PNG, GIF). Güvenli bir dosya adı oluşturur (generateSafeFileName metodu). Dosyayı sunucuya yükler (move_uploaded_file). Resim bilgilerini veritabanına kaydeder (ImageModel::uploadImage). Resim Silme İşlemi (deleteImage metodu): Kullanıcının resmi silme yetkisi olup olmadığını kontrol eder. Resmi sunucudan siler (unlink). Resmi veritabanından siler (ImageModel::deleteImage). Dosya Doğrulama (validateUpload metodu): Dosyanın hata kodunu kontrol eder ve uygun hata mesajını döndürür. Dosya türünün izin verilen türlerden biri olup olmadığını kontrol eder. Dosya boyutunun maksimum boyutu aşıp aşmadığını kontrol eder. 2. ImageModel.php Bu dosya, resimlerle ilgili veritabanı işlemlerini yönetir. Temel işlevleri şunlardır: Resim Yükleme (uploadImage metodu): Resim bilgilerini veritabanına ekler (INSERT INTO images). Resim Silme (deleteImage metodu): Belirli bir resmi veritabanından siler (DELETE FROM images). Kullanıcının Resimlerini Getirme (getUserImages metodu): Belirli bir kullanıcının resimlerini veritabanından getirir. 3. dashboard.php Bu dosya, kullanıcının resim yükleme formunu ve yüklenen resimleri görüntüleyebileceği bir arayüz sağlar. Resim Yükleme Formu: Kullanıcıdan resim başlığı, açıklama, kategori ve resim dosyası alır. CSRF token'ını içerir. Resim Galerisi: Kullanıcının yüklediği resimleri gösterir. Her resmin altında silme butonu bulunur. 4. AuthMiddleware.php ve CSRFMiddleware.php Bu dosyalar, güvenlikle ilgili işlemleri yönetir: AuthMiddleware: Kullanıcının oturum açıp açmadığını kontrol eder. Oturum açmamış kullanıcıları giriş sayfasına yönlendirir. CSRFMiddleware: CSRF token'larını oluşturur ve doğrular. 5. Logger.php Bu dosya, sistemdeki hataları ve bilgilendirme mesajlarını loglar. 6. Config.php Bu dosya, uygulama ayarlarını yönetir. Özellikle .env dosyasından ayarları yükler. 7. Bootstrap ve Diğer CSS/JS Dosyaları bootstrap.min.css: Bootstrap kütüphanesi, arayüzün stilini belirler. custom.css: Özel stiller içerir. Font Awesome: İkonlar için kullanılır. Genel Değerlendirme: Güvenlik: CSRF koruması ve oturum yönetimi iyi bir şekilde uygulanmış. Dosya Yükleme: Dosya türü ve boyutu kontrolleri mevcut, ancak dosya adı güvenliği için uniqid() ve time() kullanılarak benzersiz bir dosya adı oluşturuluyor. Veritabanı İşlemleri: Resimlerin veritabanına kaydedilmesi ve silinmesi işlemleri düzgün bir şekilde yönetiliyor. Kullanıcı Deneyimi: Bootstrap kullanılarak temiz ve kullanıcı dostu bir arayüz oluşturulmuş. İyileştirme Önerileri: Dosya Adı Güvenliği: Dosya adı oluştururken daha güvenli bir yöntem kullanılabilir. Örneğin, dosya adına kullanıcı ID'si veya başka bir benzersiz tanımlayıcı eklenebilir. Dosya Boyutu ve Türü: Dosya boyutu ve türü kontrolleri daha da genişletilebilir. Örneğin, dosya boyutu sınırı kullanıcıya göre değişebilir. Hata Yönetimi: Hata mesajları daha kullanıcı dostu hale getirilebilir. Örneğin, dosya boyutu aşıldığında kullanıcıya daha net bir mesaj gösterilebilir. Resim Önizleme: Yükleme formunda resim önizleme özelliği eklenebilir. Dosya Yükleme Sınırı: Kullanıcı başına dosya yükleme sınırı konulabilir. Bu analiz, sistemin genel yapısını ve iyileştirilebilecek noktaları ortaya koymaktadır. Herhangi bir sorunuz veya daha detaylı bir inceleme talebiniz varsa, lütfen belirtin!

Jan 15, 2025 - 11:33
PHP ile resim yükleme sistemi

PHP ile resim yükleme sistemi

1. ImageController.php

Bu dosya, resim yükleme işlemlerini yöneten bir sınıf içeriyor. İşte bu sınıfın temel özellikleri:

  • Resim Yükleme İşlemi (uploadImage metodu):

    • Kullanıcının oturum açıp açmadığını kontrol eder ($_SESSION['user_id']).
    • CSRF token'ını doğrular (CSRFMiddleware::validateToken).
    • Dosyanın geçerli bir resim dosyası olup olmadığını kontrol eder (validateUpload metodu).
    • Dosya boyutunu ve türünü kontrol eder (JPEG, PNG, GIF).
    • Güvenli bir dosya adı oluşturur (generateSafeFileName metodu).
    • Dosyayı sunucuya yükler (move_uploaded_file).
    • Resim bilgilerini veritabanına kaydeder (ImageModel::uploadImage).
  • Resim Silme İşlemi (deleteImage metodu):

    • Kullanıcının resmi silme yetkisi olup olmadığını kontrol eder.
    • Resmi sunucudan siler (unlink).
    • Resmi veritabanından siler (ImageModel::deleteImage).
  • Dosya Doğrulama (validateUpload metodu):

    • Dosyanın hata kodunu kontrol eder ve uygun hata mesajını döndürür.
    • Dosya türünün izin verilen türlerden biri olup olmadığını kontrol eder.
    • Dosya boyutunun maksimum boyutu aşıp aşmadığını kontrol eder.

2. ImageModel.php

Bu dosya, resimlerle ilgili veritabanı işlemlerini yönetir. Temel işlevleri şunlardır:

  • Resim Yükleme (uploadImage metodu):

    • Resim bilgilerini veritabanına ekler (INSERT INTO images).
  • Resim Silme (deleteImage metodu):

    • Belirli bir resmi veritabanından siler (DELETE FROM images).
  • Kullanıcının Resimlerini Getirme (getUserImages metodu):

    • Belirli bir kullanıcının resimlerini veritabanından getirir.

3. dashboard.php

Bu dosya, kullanıcının resim yükleme formunu ve yüklenen resimleri görüntüleyebileceği bir arayüz sağlar.

  • Resim Yükleme Formu:

    • Kullanıcıdan resim başlığı, açıklama, kategori ve resim dosyası alır.
    • CSRF token'ını içerir.
  • Resim Galerisi:

    • Kullanıcının yüklediği resimleri gösterir.
    • Her resmin altında silme butonu bulunur.

4. AuthMiddleware.php ve CSRFMiddleware.php

Bu dosyalar, güvenlikle ilgili işlemleri yönetir:

  • AuthMiddleware:

    • Kullanıcının oturum açıp açmadığını kontrol eder.
    • Oturum açmamış kullanıcıları giriş sayfasına yönlendirir.
  • CSRFMiddleware:

    • CSRF token'larını oluşturur ve doğrular.

5. Logger.php

Bu dosya, sistemdeki hataları ve bilgilendirme mesajlarını loglar.

6. Config.php

Bu dosya, uygulama ayarlarını yönetir. Özellikle .env dosyasından ayarları yükler.

7. Bootstrap ve Diğer CSS/JS Dosyaları

  • bootstrap.min.css: Bootstrap kütüphanesi, arayüzün stilini belirler.
  • custom.css: Özel stiller içerir.
  • Font Awesome: İkonlar için kullanılır.

Genel Değerlendirme:

  • Güvenlik: CSRF koruması ve oturum yönetimi iyi bir şekilde uygulanmış.
  • Dosya Yükleme: Dosya türü ve boyutu kontrolleri mevcut, ancak dosya adı güvenliği için uniqid() ve time() kullanılarak benzersiz bir dosya adı oluşturuluyor.
  • Veritabanı İşlemleri: Resimlerin veritabanına kaydedilmesi ve silinmesi işlemleri düzgün bir şekilde yönetiliyor.
  • Kullanıcı Deneyimi: Bootstrap kullanılarak temiz ve kullanıcı dostu bir arayüz oluşturulmuş.

İyileştirme Önerileri:

  1. Dosya Adı Güvenliği: Dosya adı oluştururken daha güvenli bir yöntem kullanılabilir. Örneğin, dosya adına kullanıcı ID'si veya başka bir benzersiz tanımlayıcı eklenebilir.
  2. Dosya Boyutu ve Türü: Dosya boyutu ve türü kontrolleri daha da genişletilebilir. Örneğin, dosya boyutu sınırı kullanıcıya göre değişebilir.
  3. Hata Yönetimi: Hata mesajları daha kullanıcı dostu hale getirilebilir. Örneğin, dosya boyutu aşıldığında kullanıcıya daha net bir mesaj gösterilebilir.
  4. Resim Önizleme: Yükleme formunda resim önizleme özelliği eklenebilir.
  5. Dosya Yükleme Sınırı: Kullanıcı başına dosya yükleme sınırı konulabilir.

Bu analiz, sistemin genel yapısını ve iyileştirilebilecek noktaları ortaya koymaktadır. Herhangi bir sorunuz veya daha detaylı bir inceleme talebiniz varsa, lütfen belirtin!