𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀 (Yeni Başlayanların Yaptığı En Yaygın 10 PHP Hatası)

Kod yazarsınız. Sayfayı yenilersiniz. Karşınızda boş, beyaz bir ekran görürsünüz.

Bu durum, PHP'nin varsayılan olarak hataları sessizce geçiştirmesinden kaynaklanır. Geliştirme aşamasında hataları göstermeye zorlamalısınız.

Dosyalarınızın en üstüne şu satırları ekleyin:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

Bunu canlı ortamda (production) kullanmayın. Bunun yerine dosya günlüklerini (logs) kullanın.

İşte 10 yaygın hata ve bunları düzeltme yolları:

  • Eksik Noktalı Virgüller Bir noktalı virgülü unutursanız PHP çalışmayı durdurur. Bu genellikle sessiz bir çöküşe neden olur. Çözüm: Her ifadenin noktalı virgül ile bittiğinden emin olun.

  • Zayıf Karşılaştırma (== vs ===) Çift eşittir işareti tip dönüşümü (type coercion) yapar. Bu da mantık hatalarına yol açar. Çözüm: Üçlü eşittir (===) kullanın. Bu, hem değeri hem de tipi kontrol eder.

  • Tanımlanmamış Değişkenler Bir değişkeni atama yapmadan kullanmak mantığınızı bozar. Çözüm: Null birleştirme operatörünü (null coalescing operator) kullanın. Örnek: $name = $_GET['name'] ?? 'Guest';

  • Global Değişken Kapsamı Fonksiyonlar, kendi dışlarındaki değişkenleri göremezler. Çözüm: Değişkenleri fonksiyonlara parametre olarak geçirin.

  • SQL Injection Kullanıcı girdisiyle sorgu oluşturmak, hackerların veri çalmasına olanak tanır. Çözüm: Yer tutucular (?) ile birlikte prepared statements kullanın.

  • Cross-Site Scripting (XSS) Kullanıcı girdisini doğrudan yazdırmak, kötü amaçlı betiklerin tarayıcılarda çalışmasına neden olur. Çözüm: Çıktıyı htmlspecialchars() içine alın.

  • Başlıklar Çoktan Gönderildi (Headers Already Sent) Tarayıcıya halihazırda metin gönderdiyseniz kullanıcıyı yönlendiremezsiniz. Tek bir boşluk bile bu hataya neden olur. Çözüm: header() çağrılarını en başa koyun. Bir yönlendirmeden sonra her zaman exit() kullanın.

  • Tanımlanmamış Dizi Anahtarları Mevcut olmayan bir form anahtarına erişmek uyarılara (warnings) neden olur. Çözüm: Tüm $_POST ve $_GET verileri için null birleştirme operatörünü kullanın.

  • Include vs Require include bir dosya eksik olduğunda sadece bir uyarı gösterir. Betik çalışmaya devam eder ve daha sonra çöker. Çözüm: Veritabanı bağlantıları gibi kritik dosyalar için require_once kullanın.

  • Kontrol Edilmemiş Dönüş Değerleri Birçok PHP fonksiyonu başarısızlık durumunda false döndürür. Eğer bu sonucu hemen kullanırsanız, daha fazla hata alırsınız. Çözüm: Kullanmadan önce sonucun false olup olmadığını kontrol edin.

Başarı için özet:

  • Geliştirme aşamasında hata raporlamayı açın.
  • Tüm karşılaştırmalar için === kullanın.
  • Tüm kullanıcı girdilerini temizleyin (sanitize).
  • Dönüş değerlerini kontrol edin.

Kaynak: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh