<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Önder AKÖZ</title>
    <description>The latest articles on DEV Community by Önder AKÖZ (@nder_akz_49aac773d1be7a).</description>
    <link>https://dev.to/nder_akz_49aac773d1be7a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2675848%2Fca152ae6-ee0b-4d60-8240-0770f646b0cb.png</url>
      <title>DEV Community: Önder AKÖZ</title>
      <link>https://dev.to/nder_akz_49aac773d1be7a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nder_akz_49aac773d1be7a"/>
    <language>en</language>
    <item>
      <title>PHP ile resim yükleme sistemi</title>
      <dc:creator>Önder AKÖZ</dc:creator>
      <pubDate>Wed, 15 Jan 2025 09:59:59 +0000</pubDate>
      <link>https://dev.to/nder_akz_49aac773d1be7a/php-ile-resim-yukleme-sistemi-14ig</link>
      <guid>https://dev.to/nder_akz_49aac773d1be7a/php-ile-resim-yukleme-sistemi-14ig</guid>
      <description>&lt;p&gt;PHP ile resim yükleme sistemi&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;ImageController.php&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resim Yükleme İşlemi (&lt;code&gt;uploadImage&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

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


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Resim Silme İşlemi (&lt;code&gt;deleteImage&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kullanıcının resmi silme yetkisi olup olmadığını kontrol eder.&lt;/li&gt;
&lt;li&gt;Resmi sunucudan siler (&lt;code&gt;unlink&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Resmi veritabanından siler (&lt;code&gt;ImageModel::deleteImage&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Dosya Doğrulama (&lt;code&gt;validateUpload&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

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


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;ImageModel.php&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bu dosya, resimlerle ilgili veritabanı işlemlerini yönetir. Temel işlevleri şunlardır:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resim Yükleme (&lt;code&gt;uploadImage&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resim bilgilerini veritabanına ekler (&lt;code&gt;INSERT INTO images&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Resim Silme (&lt;code&gt;deleteImage&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Belirli bir resmi veritabanından siler (&lt;code&gt;DELETE FROM images&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Kullanıcının Resimlerini Getirme (&lt;code&gt;getUserImages&lt;/code&gt; metodu):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Belirli bir kullanıcının resimlerini veritabanından getirir.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;dashboard.php&lt;/strong&gt;
&lt;/h3&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resim Yükleme Formu:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kullanıcıdan resim başlığı, açıklama, kategori ve resim dosyası alır.&lt;/li&gt;
&lt;li&gt;CSRF token'ını içerir.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Resim Galerisi:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kullanıcının yüklediği resimleri gösterir.&lt;/li&gt;
&lt;li&gt;Her resmin altında silme butonu bulunur.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;AuthMiddleware.php ve CSRFMiddleware.php&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bu dosyalar, güvenlikle ilgili işlemleri yönetir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AuthMiddleware:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kullanıcının oturum açıp açmadığını kontrol eder.&lt;/li&gt;
&lt;li&gt;Oturum açmamış kullanıcıları giriş sayfasına yönlendirir.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;CSRFMiddleware:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CSRF token'larını oluşturur ve doğrular.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Logger.php&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bu dosya, sistemdeki hataları ve bilgilendirme mesajlarını loglar.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;Config.php&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bu dosya, uygulama ayarlarını yönetir. Özellikle &lt;code&gt;.env&lt;/code&gt; dosyasından ayarları yükler.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;Bootstrap ve Diğer CSS/JS Dosyaları&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;bootstrap.min.css:&lt;/strong&gt; Bootstrap kütüphanesi, arayüzün stilini belirler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;custom.css:&lt;/strong&gt; Özel stiller içerir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Font Awesome:&lt;/strong&gt; İkonlar için kullanılır.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Genel Değerlendirme:
&lt;/h3&gt;

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

&lt;h3&gt;
  
  
  İyileştirme Önerileri:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dosya Adı Güvenliği:&lt;/strong&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dosya Boyutu ve Türü:&lt;/strong&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hata Yönetimi:&lt;/strong&gt; Hata mesajları daha kullanıcı dostu hale getirilebilir. Örneğin, dosya boyutu aşıldığında kullanıcıya daha net bir mesaj gösterilebilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resim Önizleme:&lt;/strong&gt; Yükleme formunda resim önizleme özelliği eklenebilir.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dosya Yükleme Sınırı:&lt;/strong&gt; Kullanıcı başına dosya yükleme sınırı konulabilir.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
